lambda - java8 Ein Objekt wird in der Reihenfolge eines bestimmten Felds im Objekt angeordnet
欧阳克
欧阳克 2017-06-23 09:13:33
0
3
949

Zum Beispiel möchte ich eine Klasse Benutzer haben
Die darin enthaltenen Attribute sind wie folgt:private int age,private String name
Es gibt mehrere Objekte

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

Jetzt möchte ich es in aufsteigender Reihenfolge nach Alter sortieren, das heißt, das endgültige Anzeigeergebnis von lisr ist Benutzer1 Benutzer3 Benutzer2
Wie schreibe ich es mit dem Lambda-Ausdruck von Java8?

Dies ist eine Klasse, die dem Benutzer ähnelt. Durch Vergleichen des darin enthaltenen Zählwerts kann die Funktion realisiert werden, aber warum ist der Code in Klammern grau?
Bewegen Sie die Maus nach oben. BerichtCan be replaced with Comparator.comparingInt more... (Ctrl+F1)

欧阳克
欧阳克

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

Antworte allen (3)
三叔

楼上的那个不是友好哈,下面这种方式更声明式一点,不是老命令式的

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

这样写不是很易读一点嘛,根据Userage属性进行个排序,属性是int就按照int排序,其实Comparator.comparing(User::getAge)创建了一个比较器,默认是升序哈,如果想要降序...reverse一下就好了

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

十分巴适的嘛...哈哈

    ringa_lee

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

      typecho

      依我看应该实现Comparable接口,然后直接调用sort

        Neueste Downloads
        Mehr>
        Web-Effekte
        Quellcode der Website
        Website-Materialien
        Frontend-Vorlage
        Über uns Haftungsausschluss Sitemap
        Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!