J2SE 8的Lambda --- Comparator
2024-08-26 21:22:31
Person[] personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
//1. 使用静态的比较器,比较的对象不能为null值
Arrays.sort(personArray, Comparator.comparing(Person::getName));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//2. 使用andThen,在第一层比较相同的情况下,使用andThen的比较器, 多次比较
personArray = new Person[]{new Person("Tom","A","Tom" ),new Person("Tom","B","Tom" ),new Person("Jack"),new Person("Alice")};
Arrays.sort(personArray, Comparator.comparing(Person::getName).thenComparing(Person::getFirstName).thenComparing(Person::getLastName));
for (Person person : personArray) {
System.out.println(person.getName()+"-"+person.getFirstName()+"-"+person.getLastName());
}
System.out.println();
//3. 变体格式,指定具体比较的内容
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
Arrays.sort(personArray, Comparator.comparing(Person::getName, (x,y)->Integer.compare(x.length(), y.length())));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//4.对于可能返回null的情况,使用nullsFirst和nullsLast适配器
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())));
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
//5. 逆序比较 Comparator.comparing().reversed()
personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())).reversed());
for (Person person : personArray) {
System.out.println(person.getName());
}
System.out.println();
最新文章
- tomcat 增加压缩设置
- bom和dom总结
- WINDOWS Server2008上部署Oracle10g及oracle SQL语法小记
- HDU-Minimum Inversion Number(最小逆序数)
- maven 一好用的仓库镜像
- IE9兼容性视图与IE9标准视图
- Android Studio无法启动 打开, Android Studio gradle下载不了
- jxl和poi处理excel之比较
- 《ArcGIS Engine+C#实例开发教程》
- 9.26 noip模拟试题
- VS2015预览版中的C#6.0 新功能(二)
- salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)
- JDK1.8源码(二)——java.lang.Integer 类
- 凸包问题——Graham Scan
- Java JDK 获取MongoDB中的所有账户
- Metasploit渗透测试梗概
- Xadmin弹出窗口
- 如何配置eclipse的安卓SDK下载目录
- 关于C#中async/await中的异常处理(上)-(转载)
- 多态设计 zen of python poem 显式而非隐式 延迟赋值