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();

最新文章

  1. tomcat 增加压缩设置
  2. bom和dom总结
  3. WINDOWS Server2008上部署Oracle10g及oracle SQL语法小记
  4. HDU-Minimum Inversion Number(最小逆序数)
  5. maven 一好用的仓库镜像
  6. IE9兼容性视图与IE9标准视图
  7. Android Studio无法启动 打开, Android Studio gradle下载不了
  8. jxl和poi处理excel之比较
  9. 《ArcGIS Engine+C#实例开发教程》
  10. 9.26 noip模拟试题
  11. VS2015预览版中的C#6.0 新功能(二)
  12. salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)
  13. JDK1.8源码(二)——java.lang.Integer 类
  14. 凸包问题——Graham Scan
  15. Java JDK 获取MongoDB中的所有账户
  16. Metasploit渗透测试梗概
  17. Xadmin弹出窗口
  18. 如何配置eclipse的安卓SDK下载目录
  19. 关于C#中async/await中的异常处理(上)-(转载)
  20. 多态设计 zen of python poem 显式而非隐式 延迟赋值

热门文章

  1. IntelliJ IDEA 2017激活
  2. npm 构建时,次要版本变化引起的问题
  3. ZedGraph使用经验(转帖)
  4. Tomcat 8 中的startup.bat
  5. Ionic Tabs使用
  6. AngularJS---核心特性
  7. 开启postgresql的远程权限
  8. C/C++基础----函数
  9. Spring+hibernate+mysql事物不回滚的原因以及处理
  10. 【Active入门-3】ActiveMQ学习-发布者与订阅者