我的对象类型是:
public class MyObjectDTO {
Long id;
String name;
LocalDate date;
String property;
}
我有一个包含此数据的此对象的ArrayList:
Element0: 1 name1 2018-01-01 property1
Element1: 1 name1 2018-01-01 property2
Element2: 2 name2 2015-05-05 property77
Element3: 2 name2 2015-05-05 property88
Element4: 2 name2 2015-05-05 null
Element5: 3 name3 2020-12-31 property99
我希望有一个新的ArrayList<MyObjectDTO>
分组如下:
Element0: 1 name1 2018-01-01 property1, property2
Element1: 2 name2 2015-05-05 property77, property88, null
Element2: 3 name3 2020-12-31 property99
所以,我想按ID,名称和数据进行分组,我想在String property
中收集String
。
是否可以使用Java Stream?
非常感谢, 安德烈
答案 0 :(得分:0)
你只需要创建一个新方法来检查列表是否包含要添加的对象(按id进行比较),如果包含则只需更新字符串,否则将新对象添加到列表中:
//add obj to list
public void add(MyObjectDTO obj, ArrayList<MyObjectDTO> list){
MyObjectDTO objectFromList = getObject(obj,list);
//not contains
if(objectFromList == null)
list.add(obj);
else //contains
objectFromList.setProperty(objectFromList.getProperty + ", "+obj.getProperty());
}
public MyObjectDTO getObject(MyObjectDTO instance,ArrayList<MyObjectDTO> list){
for(MyObjectDTO obj:list)
if(obj.equals(instance))
return obj;
return null;
}
你只需要覆盖MyObjectDTO类
上的equals方法