#java #android #collections #arraylist #core
#java #Android #Коллекции #список массивов #Ядро
Вопрос:
у меня есть структура списка массивов, упомянутая ниже.
ArrayList<Arraylisttableitem> tablestatuslist = new ArrayList<Arraylisttableitem>();
класс модели для этого списка массивов упоминается ниже.
public class Arraylisttableitem {
String total, noofcustomer, firstname, tab_name, balance, time;
public Arraylisttableitem(String total, String noofcustomer,
String firstname, String tab_name, String balance, String time) {
// TODO Auto-generated constructor stub
this.total = total;
this.noofcustomer = noofcustomer;
this.firstname = firstname;
this.tab_name = tab_name;
this.balance = balance;
this.time = time;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public String getNoofcustomer() {
return noofcustomer;
}
public void setNoofcustomer(String noofcustomer) {
this.noofcustomer = noofcustomer;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getTab_name() {
return tab_name;
}
public void setTab_name(String tab_name) {
this.tab_name = tab_name;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
в элементе с именем tab_name у меня могут быть повторяющиеся элементы. я хочу идентифицировать дублированный элемент и добавить все повторяющиеся значения. например, tab_num 10 имеет баланс 5, а tab_num 10 имеет баланс 10. я хочу, чтобы tab_nam 10 отображался один раз, а баланс должен быть равен 15 без какого-либо повторяющегося значения в списке.
пожалуйста, решите мою проблему…
я не знаю, что написать внутри этого..
for(Arraylisttableitem itemlist : tablestatuslist)
{
}
мой JSON имеет повторяющиеся значения. итак, мой список массивов поддерживает повторяющееся значение.
Комментарии:
1. Почему бы не обработать этот случай при добавлении объектов в список массивов, а не удалять дубликаты позже?
2. @ShivamVerma это замедлило бы всю операцию при каждом добавлении данных.
Ответ №1:
Если вы хотите добавить значения, то лучше сохранить типы полей как int, а не string. Однако в вашем случае вы могли бы сделать следующее
Map<String, Arraylisttableitem> map = new HashMap<String, Arraylisttableitem>();
for(Arraylisttableitem item : tableStatusList){
Arraylisttableitem prevItem = map.get(item.getTab_name());
if(prevItem != null){
prevItem.setTotal(String.valueOf(Integer.parseInt(item.getTotal()) Integer.parseInt(prevItem.getTotal())));
prevItem.setBalance(String.valueOf(Integer.parseInt(item.getBalance()) Integer.parseInt(prevItem.getBalance())));
prevItem.setNoofcustomer(String.valueOf(Integer.parseInt(item.getNoofcustomer()) Integer.parseInt(prevItem.getNoofcustomer())));
prevItem.setTime(String.valueOf(Integer.parseInt(item.getTime()) Integer.parseInt(prevItem.getTime())));
map.put(item.getTab_name(), prevItem);
} else {
map.put(item.getTab_name(), item);
}
}
tableStatusList = new ArrayList<Arraylisttableitem>(map.values());
Ответ №2:
- Перейдите из списка в набор, поскольку наборы не допускают дублирования значений.
- В Arraylisttableitem переопределяются методы hashCode и равно*
Комментарии:
1. я должен поддерживать повторяющееся значение.
2. Это не добавляет значения.