1. Person[] personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
  2. //1. 使用静态的比较器,比较的对象不能为null值
  3. Arrays.sort(personArray, Comparator.comparing(Person::getName));
  4. for (Person person : personArray) {
  5. System.out.println(person.getName());
  6. }
  7. System.out.println();
  8. //2. 使用andThen,在第一层比较相同的情况下,使用andThen的比较器, 多次比较
  9. personArray = new Person[]{new Person("Tom","A","Tom" ),new Person("Tom","B","Tom" ),new Person("Jack"),new Person("Alice")};
  10. Arrays.sort(personArray, Comparator.comparing(Person::getName).thenComparing(Person::getFirstName).thenComparing(Person::getLastName));
  11. for (Person person : personArray) {
  12. System.out.println(person.getName()+"-"+person.getFirstName()+"-"+person.getLastName());
  13. }
  14. System.out.println();
  15. //3. 变体格式,指定具体比较的内容
  16. personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice")};
  17. Arrays.sort(personArray, Comparator.comparing(Person::getName, (x,y)->Integer.compare(x.length(), y.length())));
  18. for (Person person : personArray) {
  19. System.out.println(person.getName());
  20. }
  21. System.out.println();
  22. //4.对于可能返回null的情况,使用nullsFirst和nullsLast适配器
  23. personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
  24. Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())));
  25. for (Person person : personArray) {
  26. System.out.println(person.getName());
  27. }
  28. System.out.println();
  29. //5. 逆序比较 Comparator.comparing().reversed()
  30. personArray = new Person[]{new Person("Tom"),new Person("Jack"),new Person("Alice"),new Person()};
  31. Arrays.sort(personArray, Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())).reversed());
  32. for (Person person : personArray) {
  33. System.out.println(person.getName());
  34. }
  35. System.out.println();

J2SE 8的Lambda --- Comparator的更多相关文章

  1. J2SE 8的Lambda --- 语法

    语法例子 LambdaGrammarTest lambdaTest = new LambdaGrammarTest(); // 1. 能够推导出类型的,可以不写类型 String[] planets ...

  2. 优先队列PriorityQueue&Lambda&Comparator

    今天翻阅<Labuladuo的算法小抄>时发现在使用优先队列的PriorityQueue解决一道hard题时(leetCode 23),出现了如下代码: ListNode mergeKLi ...

  3. J2SE 8的Lambda --- functions

    functions //1. Runnable 输入参数:无 返回类型void new Thread(() -> System.out.println("In Java8!" ...

  4. Java8学习(3)- Lambda 表达式

    猪脚:以下内容参考<Java 8 in Action> 本次学习内容: Lambda 基本模式 环绕执行模式 函数式接口,类型推断 方法引用 Lambda 复合 上一篇Java8学习(2) ...

  5. java中使用lambda表达式

    使用lambda表达式能够使复杂的编写方式变的简单 lambda表达式的语法 (parameters) -> expression 或 (parameters) ->{ statement ...

  6. Java中lambda表达式学习

    一.Lambda表达式的基础语法: Java8中引入了一个新的操作符"->"该操作符称为箭头操作符或Lambda操作符,箭头操作符将Lambda表达式拆分为两部分: 左侧:L ...

  7. lambda表达式已经成为了开发者必须要掌握的技能?

    lambda表达式 lambda表达式是什么 引用百度百科 “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的la ...

  8. Lambda 方法引用

    1.方法引用:若Lambda 体中的内容有方法已经实现了,我们可以使用“引用方法”(可以理解为方法引用是Lambda表达式的另外一种表现形式) 方法引用主要有三种语法格式: ①  对象 :: 实例方法 ...

  9. 201521123008《Java程序设计》第六周实验总结

    1.本周学习总结 2.书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 因为被protected修饰 ...

随机推荐

  1. python 直接将list 整体转化-----------map()

    假设有这样一个 results = ['1', '2', '3'] 转化为下面这个样子 results = [1, 2, 3] 我们可以使用map函数 在Python2中这样操作: results = ...

  2. Java JNDI 学习

    一.概念: 1.JNDI(JavaNaming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API ...

  3. 【转】每天一个linux命令(39):grep 命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表 ...

  4. ZooKeeper 知识点

    zookeeper 命令: 命令 说明 ./zkServer.sh start 启动ZooKeeper(终端执行) ./zkServer.sh stop 停止ZooKeeper(终端执行) ./zkC ...

  5. 修改 input 框输入光标的样式

    input, textarea { font-size: 24px; padding: 10px; color: red; text-shadow: 0px 0px 0px #000; -webkit ...

  6. Angular 4 绑定

    一.事件绑定 1. 创建doOnClick函数 2. 网页中绑定doOnClick方法 3. 效果图 二. 属性绑定 1. 定义imgUrl的网址 2. 定义img  src属性 另外一种写法 3. ...

  7. 【appium】根据UIAutomator定位元素

    text属性的方法 driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View") ...

  8. 如何判断事务是否完成,SqlTransaction

    SqlConnection sconn = null; SqlCommand scmd = null; SqlTransaction strans = null; try { string sqlIn ...

  9. Android免费短信验证

    转载请注明住处:http://blog.csdn.net/crazy1235/article/details/41912003 介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息 ...

  10. Django中间件执行流程

    中间件函数是 django 框架为我们预留的函数接口, 让我们可以干预请求和应答的过程 1. 获取浏览器端的IP地址: 使用 request.META[‘REMOTE_ADDR’] 2. 使用中间件 ...