Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对对象的项进行分组(聚集)_Java_List_Arraylist - Fatal编程技术网

Java 对对象的项进行分组(聚集)

Java 对对象的项进行分组(聚集),java,list,arraylist,Java,List,Arraylist,我有一个对象列表,具有以下特征: Class Object{ String gender; String state; int quantity; int Salary; } List<Object> myList=new ArrayList<Object>; 类对象{ 字符串性别; 字符串状态; 整数; 国际工资; } 列表myList=新的ArrayList; 作为列表的输入,我有以下内容: 作为输出,我只想保留一个具有相同性别和相同状态的对象

我有一个对象列表,具有以下特征:

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

List<Object> myList=new ArrayList<Object>;
类对象{
字符串性别;
字符串状态;
整数;
国际工资;
}
列表myList=新的ArrayList;
作为列表的输入,我有以下内容:

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


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

首先,我将您的类重命名为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
类MyObject{
字符串性别;
字符串状态;
整数;
国际工资;
}
List myList=new ArrayList();
List stateAndGender=新建ArrayList();
List finalList=new ArrayList();
//在此处添加对象
对于(MyObject mO:myList){
字符串s=mO.getGender();
s+=”,“+mO.getState();
如果(stateAndGender.indexOf)=-1)
{
MyObject fO=新的MyObject();
fO.setGender(mO.getGender());
fO.setState(mO.getState());
州和性别。添加(s);
int Qua=mO.getQuantity();
int Sal=mO.getSalary();

for(int i=0;iYou实际上还没有问任何问题。到目前为止,你尝试了什么,结果如何?@ScottHunter我编辑了这篇文章,你现在明白了吗?你需要一个
for
循环…你能更具体一点吗??@scrapedColafor(对象a:MyList){//treatment}我不知道如何处理输出,我需要的是我的列表,而不是3个列表above@hamzaspecter好的,我会添加一个解决方案,给我一分钟!