比较和合并列表中的对象

时间:2018-12-27 18:58:26

标签: java java-stream

我有一堂课

class CustomDetail{
 String version;
 List<String> details;
}

由于某种方法,我得到了CustomDetail的列表,如

List<CustomDetails> resultList 
resultList.get(0) => CustomDetail("V1", {"123"})
resultList.get(1) => CustomDetail("V1", {"456"})
...
resultList.get(9) => CustomDetail("B", {"atr"})
resultList.get(10) => CustomDetail("B", {"atr1"})
resultList.get(11) => CustomDetail("B", {"atr3"})

此列表中的CustomDetails可能包含相同的版本。

并且我需要合并这些对象,例如:

List<CustomDetails> newList = ...
newList.get(0)=> CustomDetail("V1", {"123", "456"})
newList.get(1)=> CustomDetail("B", {"atr", "atr1", "atr3"})

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:-1)

首先在您的equals上实施hashCodeCustomDetail。您的IDE很可能会提供一种捷径来生成必要的代码。

然后创建一个Set(即HashSet)并将两个列表都添加到其中。由于集合不能包含重复的条目,因此您最终只能得到一个包含唯一成员的集合。如果需要,可以从List创建一个Set