【JAVA 8】 List 使用Lambda表达式操作对象字段进行升序、降序

warning: 这篇文章距离上次修改已过357天,其中的内容可能已经有所变动。

public static void main(String[] args) {

// 初始化集合
List<User> userList = new ArrayList<User>();
Random random = new Random();
for (int i = 0; i < 15; i++) {
    userList.add(new User(
            random.nextInt(100),
            "user" + i,
            new Date(System.currentTimeMillis() - random.nextInt(100))));
}
// 原集合
System.out.println("------userList------");
userList.forEach((user) -> {
    System.out.println(user);
});

// 升序
System.out.println("------ascByBirthdayList------");
List<User> ascByBirthdayList = userList.stream().sorted().collect(Collectors.toList());
ascByBirthdayList.forEach((user) -> {
    System.out.println(user);
});
// 降序 --> 注意是在 ascByBirthdayList 的基础上,将 ascByBirthdayList 集合反转,更容易理解
System.out.println("------descByBirthdayList------");
List<User> descByBirthdayList = ascByBirthdayList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
descByBirthdayList.forEach(user -> {
    System.out.println(user);
});

// 升序
System.out.println("------ascByIdList------");
List<User> ascByIdList = userList.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
ascByIdList.forEach(user -> {
    System.out.println(user);
});
/*
    降序 --> 注意这里不能在 ascByIdList 的基础上,将 ascByIdList 集合反转

    如果这里仅仅使用 ascByIdList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
    那么得到的结果和 descByBirthdayList 是一致的, 因为没有指明排序的字段,默认是按birthday来排序的
 */
System.out.println("------descByIdList------");
List<User> descByIdList = userList.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
descByIdList.forEach(user -> {
    System.out.println(user);
});

}

版权声明 ▶ 本网站名称:我的学习笔记
▶ 本文链接:https://ooolo.net/article/16.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!!

none
最后修改于:2023年04月29日 17:56

添加新评论

icon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.png