2016-03-02 53 views
-2

我有一个对象的一个​​列表中,具有以下特征:组(集合)的对象的项

Class Object{ 
    String gender; 
    String state; 
    int quantity; 
    int Salary; 
} 

List<Object> myList=new ArrayList<Object>; 

作为列表的输入,我有以下:

enter image description here

作为输出,我想只保留一个对象具有相同的性别和相同的状态,在同一时间总和数量和salsary相当数量,如下所示:

enter image description here

我的问题是我如何通过myList循环,找到具有相同性别和相同状态的对象,只保留其中一个对象,并总结数量和工资相应的数量?

+1

你还没有真正问过问题。到目前为止你尝试过什么,它是如何缩短的? –

+0

@ScottHunter我已编辑帖子,你现在明白了吗? –

+0

你需要一个'for'循环... – scrappedcola

回答

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的。

+0

作为输出我需要myList中,而不是3所列出如上述 –

+0

@ hamzaspecter好的,我会添加一个解决方法,给我一分钟! –