我有一个对象列表,具有以下特征:
Class Object{
String gender;
String state;
int quantity;
int Salary;
}
List<Object> myList=new ArrayList<Object>;
作为List的输入,我有以下内容:
并且作为输出,我想只保留具有相同性别和相同状态的对象的一次出现,同时总结数量和salsary correspanding,如下所示:
我的问题是我如何循环浏览myList,查找具有相同性别和相同状态的对象,只保留一次,并将数量与工资相加?
答案 0 :(得分:1)
首先,我将您的类重命名为MyObject,因为Object是基础Java类。现在,对于其余部分 - 您可以使用由您已找到的性别和状态组合构成的伪索引,并总结列表其余部分的值,如下所示:
Class MyObject{
String gender;
String state;
int quantity;
int Salary;
}
List<MyObject> myList=new ArrayList<MyObject>();
List<String> stateAndGender = new ArrayList<String>();
List<MyObject> finalList = new ArrayList<MyObject>();
// add objects here
for(MyObject mO : myList){
String s = mO.getGender();
s+="," + mO.getState();
if(stateAndGender.indexOf(s)==-1)
{
MyObject fO = new MyObject();
fO.setGender(mO.getGender());
fO.setState(mO.getState());
stateAndGender.add(s);
int Qua = mO.getQuantity();
int Sal = mO.getSalary();
for(int i=0; i<myList.size(); i++)
{
if(String t = myList.get(i).getGender()+","+myList.get(i).getGender() == s)
Qua += myList.get(i).getQuantity();
Sal += myList.get(i).getSalary();
}
fO.setQuantity(Qua);
fO.setSalary(Sal);
finalList.add(fO);
}
}
// Then return finalList
上面的代码假设您为已创建的类的字段设置了正确的getter,并且您的性别和状态不包含逗号,否则您需要调整代码。
更新:现在,您可以根据需要获得具有正确值的MyObject类型列表!但它不是原始的,而是名为finalList
的那个。