文章目录
- Java8 Lambda.stream.sorted() 方法使用浅析分享
- sorted() 重载方法一
- 升序
- 降序
- sorted() 重载方法二
- 升序
- 降序
- 多字段排序
- mock代码
Java8 Lambda.stream.sorted() 方法使用浅析分享
本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用!
sorted() 重载方法一
sorted()
:默认自然排序;
升序
@Testpublic void testSorted1() {List<Integer> list = Lists.newArrayList(2,5,3,4,1,2,6,7,9,1);List<Integer> collect = list.stream().sorted().collect(Collectors.toList());System.out.println(JSONObject.toJSONString(collect));}
运行结果:
降序
倒序需要结合 Comparator.reverseOrder()
方法使用:
@Testpublic void testSorted1() {List<Integer> list = Lists.newArrayList(2,5,3,4,1,2,6,7,9,1);List<Integer> collect = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());System.out.println(JSONObject.toJSONString(collect));}
运行结果:
sorted() 重载方法二
sorted(Comparator<? super T> comparator)
:通过创建 Comparator
实例,按照指定规则升/降序排序元素。
升序
按生日升序:
@Testpublic void testSorted2() {List<Student> list = this.getStudent();List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday)).collect(Collectors.toList());System.out.println(JSONObject.toJSONString(collect));}
降序
按生日降序:
@Testpublic void testSorted2() {List<Student> list = this.getStudent();List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday, Comparator.reverseOrder())).collect(Collectors.toList());System.out.println(JSONObject.toJSONString(collect));}
多字段排序
排序说明:
-
生日升序;
-
学号降序;
@Testpublic void testSorted2() {List<Student> list = this.getStudent();List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday).thenComparing(Student::getNum, Comparator.reverseOrder())).collect(Collectors.toList());System.out.println(JSONObject.toJSONString(collect));}
运行结果:
mock代码
student对象:
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student {/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 生日*/@JSONField(format="yyyy-MM-dd HH:mm:ss")private Date birthday;/*** 学号*/private Integer num;}
mock数据:
public List<Student> getStudent() {return Lists.newArrayList(new Student("小张", 17, DateUtil.parse("2006-10-03 15:18:56"), 11),new Student("小李", 15, DateUtil.parse("2008-03-19 02:18:56"), 5),new Student("小李", 15, DateUtil.parse("2008-03-19 02:18:56"), 2),new Student("小王", 16, DateUtil.parse("2007-02-21 22:18:56"), 29));}
eUtil.parse("2008-03-19 02:18:56"), 2),new Student("小王", 16, DateUtil.parse("2007-02-21 22:18:56"), 29));}
感 谢 各 位 大 佬 的 阅 读,随 手 点 赞,日 薪 过 万~! !!