在Java8中从父列表排序子列表
父类是由子类继承的类。它由在Java8中从父列表排序子列表,java,sorting,lambda,java-8,Java,Sorting,Lambda,Java 8,父类是由子类继承的类。它由孙子继承。每个类都包含子类的列表(即父类包含子类的列表,子类包含孙子类的列表)。每个类包含50个属性(attrib1-atrib50)getChildList()返回类型为Child的对象的arrayListget孙子列表()返回孙子类型的对象的arrayList 让resultSet成为父项的列表 List<Parent> resultSet 现在,我的下一个标准是分别对每个孩子进行排序。 例如,如果我的条件是子列表的attribute15,那么我想按a
孙子继承。每个类都包含子类的列表(即父类包含子类的列表
,子类包含孙子类的列表
)。每个类包含50个属性(attrib1
-atrib50
)getChildList()
返回类型为Child
的对象的arrayList
get孙子列表()
返回孙子类型的对象的arrayList
让resultSet
成为父项的列表
List<Parent> resultSet
现在,我的下一个标准是分别对每个孩子进行排序。
例如,如果我的条件是子列表的attribute15,那么我想按arribute15对每个子列表进行排序,
对于列表中的每个父对象
。我应该如何使用Java8概念(特别是流)来实现这一点。
(请不要给我一个通过for循环迭代每个父对象并获取子对象列表
并对其排序的解决方案。)您可以使用forEach
迭代父对象
s,然后对子对象
列表进行排序:
resultSet.stream()
.forEach(p -> p.getChildList().sort(Comparator.comparing(Child::getAttrib15)));
当您有这么多属性时,可能是时候切换到动态属性了(将名称-值对存储在HashMap
或EnumMap
中)。。。同样comparatorbyfirst=Comparator.comparing(父级::getAttrib1)代码>看起来更适合我。
resultSet.stream()
.forEach(p -> p.getChildList().sort(Comparator.comparing(Child::getAttrib15)));