我有这些课程:
Object 1
String label
List<Object2>
Object2
String label
List<Object3>
Object3
String label
我想比较两个Object1
列表。
这就是我所做的:
public class Object1 implements Comparator<Object1> {
@Override
public int compare(Object1 o1, Object1 o2) {
int compare = o1.getLabel().compareTo(o2.getLabel());
if (compare == 0) {
Iterator<Object2> iterator1 = o1.getObjects2().iterator();
Iterator<Object2> iterator2 = o2.getObjects2().iterator();
while (iterator1.hasNext() && iterator2.hasNext() && compare == 0) {
Object2 t1 = iterator1.next();
Object2 t2 = iterator2.next();
compare = t1.getLabel().compareTo(t2.getLabel());
}
}
return compare;
}
我为Object2
做了同样的事。
我通过以下代码在代码中调用Object1
来对其进行排序:
SomeObject.getListOfObject1().stream().sorted();
还有其他方法“清洁”吗?我觉得我错过了一些东西......
答案 0 :(得分:0)
首先,我建议您使用Collections.sort(..)直接对列表进行排序
其次,我将compare(..)
方法实施到所有Object1
,Object2
和Object3
。如果您希望将来使用这些对象创建更复杂的结构,它们将已经实现。
最后,实施equals()
和hashCode()
方法。
答案 1 :(得分:0)
您可以采用的一种简单方法是覆盖对象的equals()
和hash()
方法,然后使用列表的equals()
方法比较两个列表,例如: list1.equals(list2);