91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Guava使用Ordering排序器的方法

發布時間:2020-11-17 14:38:08 來源:億速云 閱讀:220 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關Java Guava使用Ordering排序器的方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一 創建排序器

排序器:可以用來為構建復雜的比較器,以完成集合排序的功能:

本質上來說,Ordering 實例無非就是一個特殊的Comparator 實例。

Ordering把很多基于Comparator的靜態方法(如Collections.max)包裝為自己的實例方法(非靜態方法),

并且提供了鏈式調用方法,來定制和增強現有的比較器

//創建排序器
  @Test
  public void createOreing(){
    //對可排序類型做自然排序,如數字按大小,日期按先后排序
    Ordering<Comparable> natural = Ordering.natural();
    //按對象的字符串形式做字典排序
    Ordering.usingToString();
    //把給定的Comparator轉化為排序器或者繼承Ordering實現自定義排序器
    Ordering<Integer> from = Ordering.from((Integer x, Integer y) -> Ints.compare(x, y));
    System.out.println(from.max(5, 6));
  }

二 擴展排序器,變換成其他功能排序器

//衍生其他排序器
  @Test
  public void anotherOreing(){
    Ordering<Comparable> natural = Ordering.natural();
    natural.max(1, 2); //2
    //獲取語義相反的排序器
    natural.reverse().max(1, 2); //1
    List<Integer> list = Lists.newArrayList(5, 9, 3, 7, 4);
    Collections.sort(list,natural.nullsFirst()); //使用排序器對集合排序
    list.forEach(x-> System.out.print(x+", ")); //3, 4, 5, 7, 9

    // 不使用這兩個排序器,排序元素不能為null,否則會報空指針
    natural.nullsFirst();//使用當前排序器,并把null值排到最前
    natural.nullsLast();//使用當前排序器,并把null值排到最后

    natural.compound(natural);//合成另一個比較器,以處理當前排序器中的相等情況,即添加第二個比較器

    //onResultOf:將function應用在各個元素上之后, 在使用原始ordering進行排序
    Collections.sort(list,natural.onResultOf(x->x*(-1)));//元素變為負數再排序
    list.forEach(x-> System.out.print(x+", ")); //9, 7, 5, 4, 3
  }

三 使用排序器

//使用排序器
  @Test
  public void operOrdering(){
    Ordering<Comparable> natural = Ordering.natural();
    List<Integer> list02 = Lists.newArrayList(6,4,9,3,1,5,3);
    /**
     * greatestOf: 獲取可迭代對象中最大的k個元素,并按從大到小排序,返回一個集合
     * leastOfL獲取最小的幾個,并按從小到大排序
     */
    natural.greatestOf(list02,1).forEach(x-> System.out.println(x)); //9
    natural.leastOf(list02,1).forEach(x-> System.out.println(x)); //1
    //返回集合的一個排好序的副本
    natural.sortedCopy(list02);
    natural.immutableSortedCopy(list02); //返回不可變的排序副本
    /**
     * isOrdered: 判斷是否已經按排序器有序,元素不能少于2,允許有相等元素
     * isStrictlyOrdered: 是否嚴格排序,不允許有相等元素
     */
    Collections.sort(list02,natural);
    natural.isOrdered(list02);//true
    natural.isStrictlyOrdered(list02); //false
    //其他直接比較元素
    natural.compare(1,2);natural.max(5,6);natural.min(list02);
  }

上述就是小編為大家分享的Java Guava使用Ordering排序器的方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐清市| 新龙县| 区。| 鞍山市| 金寨县| 彰武县| 铜川市| 志丹县| 贡嘎县| 濮阳市| 铁力市| 阿坝县| 泰宁县| 乡城县| 乌拉特后旗| 临高县| 南丰县| 松潘县| 资讯| 巴东县| 黄龙县| 天祝| 六盘水市| 察雅县| 米泉市| 平乡县| 大安市| 广东省| 南乐县| 阿拉善右旗| 惠安县| 浮山县| 宣武区| 临洮县| 汤阴县| 翁牛特旗| 合作市| 新余市| 宜君县| 南陵县| 保山市|