lambda - java8 Un objet est disposé dans l'ordre d'un certain champ dans l'objet
欧阳克
欧阳克 2017-06-23 09:13:33
0
3
1041

Par exemple, je veux avoir une classe User
Les attributs qu'elle contient sont comme ceci private int age,private String name
Il y a plusieurs objets

User user1 = new User(21,"张三") User user2 = new User(25,"李四") User user3 = new User(22,"王五")     List<User> list = new ArrayList(); list.add(user1) add(user2) add(user3)

Maintenant, je veux le trier par ordre croissant d'âge, c'est-à-dire que le résultat final d'affichage de lisr est user1 user3 user2
Comment l'écrire en utilisant l'expression lambda de java8 ?

Il s'agit d'une classe similaire à l'utilisateur. La comparaison de la valeur de comptage à l'intérieur peut réaliser la fonction, mais pourquoi le code entre parenthèses est-il gris ?
Déplacez la souris vers le haut. Rapport Can be replaced with Comparator.comparingInt more... (Ctrl+F1)

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

répondre à tous(3)
三叔

Celui de l'étage n'est pas convivial. La méthode suivante est plus déclarative, pas l'ancien style impératif

.
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge))
                                  .collect(Collectors.toList());

N'est-il pas plus facile de lire comme ça ? J'ai créé un comparateur basé sur Userage属性进行个排序,属性是int就按照int排序,其实Comparator.comparing(User::getAge) La valeur par défaut est l'ordre croissant... Si vous voulez l'ordre décroissant... inversez-le

.
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge).reversed())
                                  .collect(Collectors.toList());

C'est très confortable...haha

ringa_lee

Arrays.sort(list, (user1 , user2) -> Integer.compare(v1.age, v2.age));

typecho

À mon avis, vous devriez implémenter l'interface Comparable, puis appeler directement le tri

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal