zoukankan      html  css  js  c++  java
  • java8学习之比较器深入

    继续接着上次【http://www.cnblogs.com/webor2006/p/8331498.html】的比较器进行探究,上次排序采用是的利用Collections.sort()进行的,下面采用List集合本身的sort()方法【Java8才加入的】,其使用基本上类似:

    接下来同样改用Lambda表达式:

    接下来需求升级:先对字符串的长度升序排序,如果字符串的长度有相同的则按字符串的ASCII码进行第二级排序,这时Comparator.thenComparing()方法就派上用场啦,如下:

    那下面来看一下thenComparing()实现的具体细节:

    接下来再看一下方法的具体实现:

    接下来咱们用自己的比较器,而不用"String.CASE_INSENSITIVE_ORDER"了,如下:

    接下来再来换一种方式实现:

    接下来继续变更:

    继续,这次就是要把Comparator相关方法操练得想吐~~

    在运行之前咱们先来预测一下,这显示就是在上一次的结果之上再进行一次逆嘛,上次结果为"welcome, world, nihao, hello",那这次肯定为"hello, nihao,world,welcome"啦,运行论证:

    什么鬼~~还记得咱们在读thenComparing()的javadoc时的说明么,只有发现两个元素是相等的情况下传给它的比较器才会管用,而由于:

    当然最后一个thenComparing()中的比较器压根都不会执行。

  • 相关阅读:
    聪明的质检员 (二分)
    分巧克力(二分)
    产生冠军 HDU
    Legal or Not HDU
    确定比赛名次 HDU
    最短路径问题 HDU
    dijkstra算法为什么不能有负边?
    最短路 HDU
    dijkstra算法 模板
    Floyd算法模板--详解
  • 原文地址:https://www.cnblogs.com/webor2006/p/8341876.html
Copyright © 2011-2022 走看看