Maison > Questions et réponses > le corps du texte
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)
三叔2017-06-23 09:15:33
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 User
的age
属性进行个排序,属性是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_lee2017-06-23 09:15:33
Arrays.sort(list, (user1 , user2) -> Integer.compare(v1.age, v2.age));
typecho2017-06-23 09:15:33
À mon avis, vous devriez implémenter l'interface Comparable, puis appeler directement le tri