在java 8中从父级排序子列表

时间:2015-08-03 17:14:43

标签: java sorting lambda java-8

Parent是Child继承的类。由GrandChild继承。每个类包含子类的List(即Parent包含List ChildChild包含List GrandChild)。每个类包含50个属性(attrib1 - atrib50)。 getChildList()返回arrayList类型的Child个对象。 getGrandChildList()会返回arrayList

类型的GrandChild个对象

resultSet成为List

Parent
List<Parent> resultSet

现在我想根据一些属性对列表进行排序。例如,如果我想根据两个父属性(比如属性1和属性2)对resultSet进行排序,我会使用此代码。

Comparator<Parent> byFirst = (e1, e2) -> e2.getAttrib1().compareTo(e1.getAttrib1());
Comparator<Parent> bySecond = (e1, e2) -> e1.getAttrib2().compareTo(e2.getAttrib2());

Comparator<Parent> byThird = byFirst.thenComparing(bySecond);

resultSet.sort(byThird);

现在我的下一个标准是分别对每个孩子进行排序。 例如,如果我的条件是子列表的属性15,那么我想通过arribute15对每个子列表进行排序, 对于List<Parent>中的每个父对象。我应该如何使用Java 8概念(特别是流)来实现这一点。 (请不要给我一个通过for循环迭代每个父级的解决方案并获得childlist并对其进行排序。)

1 个答案:

答案 0 :(得分:3)

您可以使用dat[,rn:=factor(rn,levels=month.abb)][order(rn)]Parent进行迭代,然后对forEach列表进行排序:

Child