Tri à l'aide de l'interface de comparaison et des flux java 8
Parent est une classe qui est héritée par l'Enfant. qui est hérité par le petit-fils. Chaque classe contient la Liste de la classe enfant(j'.e Parent contient la Liste de l'Enfant et de l'Enfant contient la Liste de petit-enfant). Chaque classe contient 50 attributs(attrib1-atrib50).
getChildList() retourne la liste de tableaux d'objets de type Enfant getGrandChildList() retourne la liste de tableaux d'objets de type petit-enfant
Laisser resultSet être Liste de Parent
List<Parent> resultSet
Maintenant, je veux trier la liste en fonction de certains attributs. Par exemple si je veux trier jeu de résultats basée sur deux attributs parents(dire et de l'attribut 1 Attribut 2, j'utilise ce code.
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);
List<Parent> sortedList = resultSet.stream().sorted(byThird)
.collect(Collectors.toList());
Maintenant, je veux trier les parentlist basée sur 1 attribut de la classe Enfant et de l'attribut 1 de petit-enfant de la classe. Comment dois-je régler ce.
source d'informationauteur Manu Joy
Vous devez vous connecter pour publier un commentaire.
Utilisation
Comparator.comparing
pour faire la comparaison. Juste comprendre ce que vous voulez comparer. Il ressemble à quelque chose comme cela, sauf que vous écrivez ce que la logique que vous souhaitez utiliser pour extraire les valeurs de comparer:Comparator.comparing
rendrait également les exemples dans votre question est beaucoup plus agréable (à l'aide de statique des importations) :