如何优化网站,华夏人寿保险公司官网,公司做网站计入那个科目,建设项目竣工验收公示网站目录 1.stream流式排序
1.使用说明:
2.多字段排序
2.Collections.sort(......) 排序 1.stream流式排序
Java8提供了流式操作来简化我们的编程#xff0c;比如排序、分组、过滤、Map操作等API#xff0c;配合Lambda表达式给我们编程带来了很大的便利#xff0c;这篇文章重…目录 1.stream流式排序
1.使用说明:
2.多字段排序
2.Collections.sort(......) 排序 1.stream流式排序
Java8提供了流式操作来简化我们的编程比如排序、分组、过滤、Map操作等API配合Lambda表达式给我们编程带来了很大的便利这篇文章重点介绍Stream流式排序功能-- list.stream().sorted(......)。 功能说明能够使用自然序或着实现Comparator 函数接口来自定义排序规则。
1.使用说明:
自然序排序stream().sorted()List中的元素需要实现Comparable 接口例如String通常我们自己定义的类是没有实现这个接口的。自定义排序stream().sorted(Comparator? super T comparator)如果我们自定义的类没有实现Comparable接口那么就可以使用这种方式使用Lambada 来创建一个Comparator (函数接口)实例并且可以根据需要进行升序、降序排列
官网简单示例:
#自然序排序一个list
list.stream().sorted() #自然序逆序元素使用Comparator 提供的reverseOrder() 方法
list.stream().sorted(Comparator.reverseOrder()) # 使用Comparator 来排序一个list
list.stream().sorted(Comparator.comparing(Student::getAge)) # 颠倒使用Comparator 来排序一个list的顺序使用Comparator 提供的reverseOrder() 方法
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
2.多字段排序
通过Comparator.thenComparing(Comparator? super T comparator) 实现
1.简单字符串排序(数字排序也一样)
先以客户编码排序再以产品信息排序 ListCustomer customerListNew customerList.stream().sorted(Comparator.comparing(Customer::getCustomerCode).thenComparing(Customer::getProductSeries)).collect(Collectors.toList());
2.区分升序和降序
通过Comparator.thenComparing(Comparator? super T other) 实现多字段排序使用Comparator.reverseOrder() 做为thenComparing方法的参数实现降序
先以年龄的升序排序再以地域降序Comparator.reverseOrder()
ListCustomer customerListNew customerList.stream().sorted(Comparator.comparing(Customer::getAge).thenComparing(Customer::getArea, Comparator.reverseOrder())).collect(Collectors.toList());
3.字符串转数字排序 有的情况下需要将字符串转为数字进行排序这时候该怎么办呢使用Lambda表达式.
.thenComparing(t - {}) 中的Lambda表达式可能会失去java类型这时候需要在开始的时候加上强制类型转换 Comparator.comparing( (Customer s) - {......} )
//按照Type, Name进行排序
ListCustomer sceneListNew sceneList.stream()
.sorted(Comparator.comparing((Customer s) - {if(StringUtils.isEmpty(s.getTypeSeq())) return 0;return Integer.valueOf(s.getTypeSeq());
}).thenComparing(t - {if(StringUtils.isEmpty(t.getNameSeq())) return 0;return Integer.valueOf(t.getNameSeq());}
)).collect(Collectors.toList());
2.Collections.sort(......) 排序
也要用到Lambda表达式。
下面也给出一个需要将String转为Integer进行比较的例子
Collections.sort(stageList, (mgStage1, mgStage2) - {if (null mgStage1.getStageSeq()){return 1;}if (null mgStage2.getStageSeq()){return -1;}return Integer.parseInt(mgStage1.getStageSeq()) - Integer.parseInt(mgStage2.getStageSeq());
});