java8stream多字段排序
List<;类> list; 代表某集合
//返回对象集合以类属性⼀升序排序
list.stream().sorted(Comparatorparing(类::属性⼀));
//返回对象集合以类属性⼀降序排序注意两种写法
list.stream().sorted(Comparatorparing(类::属性⼀).reversed());//先以属性⼀升序,结果进⾏属性⼀降序
list.stream().sorted(Comparatorparing(类::属性⼀,verseOrder()));//以属性⼀降序
//返回对象集合以类属性⼀升序属性⼆升序
list.stream().sorted(Comparatorparing(类::属性⼀).thenComparing(类::属性⼆));
//返回对象集合以类属性⼀降序属性⼆升序注意两种写法
java stream
list.stream().sorted(Comparatorparing(类::属性⼀).reversed().thenComparing(类::属性⼆));//先以属性⼀升序,升序结果进⾏属性⼀降序,再进⾏属性⼆升序
list.stream().sorted(Comparatorparing(类::属性⼀,verseOrder()).thenComparing(类::属性⼆));//先以属性⼀降序,再进⾏属性⼆升序
//返回对象集合以类属性⼀降序属性⼆降序注意两种写法
list.stream().sorted(Comparatorparing(类::属性⼀).reversed().thenComparing(类::属性⼆,verseOrder()));//先以属性⼀升序,升序结果进⾏属性⼀降序,再进⾏属性⼆降序
list.stream().sorted(Comparatorparing(类::属性⼀,verseOrder()).thenComparing(类::属性⼆,verseOrder()));//先以属性⼀降序,再进⾏属性⼆降序
//返回对象集合以类属性⼀升序属性⼆降序注意两种写法
list.stream().sorted(Comparatorparing(类::属性⼀).reversed().thenComparing(类::属性⼆).reversed());//先以属性⼀升序,升序结果进⾏属性⼀降序,再进⾏属性⼆升序,结果进⾏属性⼀降序属性⼆降序
list.stream().sorted(Comparatorparing(类::属性⼀).thenComparing(类::属性⼆,verseOrder()));//先以属性⼀升序,再进⾏属性⼆降序
⽣成结果
List<Customer> list = Arrays.asList(c1,c2,c3);
//转成list
List<Integer> ageList = list.stream().map(Customer::getAge).List());
System.out.println("ageList:"+ageList);//ageList:[10, 20, 10]
//转成set
Set<Integer> ageSet = list.stream().map(Customer::getAge).Set());
System.out.println("ageSet:"+ageSet);//ageSet:[20, 10]
//转成map,注:key不能相同,否则报错
Map<String, Integer> CustomerMap = list.stream().Map(Customer::getName, Customer::getAge));
System.out.println("CustomerMap:"+CustomerMap);//CustomerMap:{李四=20, 张三=10, 王五=10}
//字符串分隔符连接
String joinName = list.stream().map(Customer::getName).collect(Collectors.joining(",", "(", ")"));
System.out.println("joinName:"+joinName);//joinName:(张三,李四,王五)
//聚合操作
//1.学⽣总数
Long count = list.stream().unting());
System.out.println("count:"+count);//count:3
//2.最⼤年龄 (最⼩的minBy同理)
Integer maxAge = list.stream().map(Customer::getAge).collect(Collectors.maxBy(Integer::compare)).get();
System.out.println("maxAge:"+maxAge);//maxAge:20
//3.所有⼈的年龄
Integer sumAge = list.stream().collect(Collectors.summingInt(Customer::getAge));
System.out.println("sumAge:"+sumAge);//sumAge:40
//4.平均年龄
Double averageAge = list.stream().collect(Collectors.averagingDouble(Customer::getAge));
System.out.println("averageAge:"+averageAge);//averageAge:13.333333333333334
//分组
Map<Integer, List<Customer>> ageMap = list.stream().upingBy(Customer::getAge)); System.out.println("ageMap:"+age
Map);//ageMap:{20=[com.mashibing.stream.Customer@20ad9418], 10= [com.mashibing.stream.Customer@31cefde0, com.mashibing.stream.Customer@439f5b3d]}
//分区
//分成两部分,⼀部分⼤于10岁,⼀部分⼩于等于10岁
Map<Boolean, List<Customer>> partMap = list.stream().collect(Collectors.partitioningBy(v -> v.getAge() > 10)); System.out.println("partMap:"+partMap);
//规约
Integer allAge = list.stream().map(Customer::getAge).ducing(Integer::sum)).get(); System.out.println("allAge:"+allAge);//allAge:40

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。