最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Guava排序器Ordering原理及代碼實(shí)例

 更新時(shí)間:2020年11月16日 11:43:38   作者:侯賽雷  
這篇文章主要介紹了Java Guava排序器Ordering原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一 創(chuàng)建排序器

排序器:可以用來(lái)為構(gòu)建復(fù)雜的比較器,以完成集合排序的功能:

本質(zhì)上來(lái)說(shuō),Ordering 實(shí)例無(wú)非就是一個(gè)特殊的Comparator 實(shí)例。

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

并且提供了鏈?zhǔn)秸{(diào)用方法,來(lái)定制和增強(qiáng)現(xiàn)有的比較器

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

二 擴(kuò)展排序器,變換成其他功能排序器

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

    // 不使用這兩個(gè)排序器,排序元素不能為null,否則會(huì)報(bào)空指針
    natural.nullsFirst();//使用當(dāng)前排序器,并把null值排到最前
    natural.nullsLast();//使用當(dāng)前排序器,并把null值排到最后

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

    //onResultOf:將function應(yīng)用在各個(gè)元素上之后, 在使用原始o(jì)rdering進(jìn)行排序
    Collections.sort(list,natural.onResultOf(x->x*(-1)));//元素變?yōu)樨?fù)數(shù)再排序
    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: 獲取可迭代對(duì)象中最大的k個(gè)元素,并按從大到小排序,返回一個(gè)集合
     * leastOfL獲取最小的幾個(gè),并按從小到大排序
     */
    natural.greatestOf(list02,1).forEach(x-> System.out.println(x)); //9
    natural.leastOf(list02,1).forEach(x-> System.out.println(x)); //1
    //返回集合的一個(gè)排好序的副本
    natural.sortedCopy(list02);
    natural.immutableSortedCopy(list02); //返回不可變的排序副本
    /**
     * isOrdered: 判斷是否已經(jīng)按排序器有序,元素不能少于2,允許有相等元素
     * isStrictlyOrdered: 是否嚴(yán)格排序,不允許有相等元素
     */
    Collections.sort(list02,natural);
    natural.isOrdered(list02);//true
    natural.isStrictlyOrdered(list02); //false
    //其他直接比較元素
    natural.compare(1,2);natural.max(5,6);natural.min(list02);
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security架構(gòu)以及源碼詳析

    Spring Security架構(gòu)以及源碼詳析

    這篇文章主要給大家介紹了關(guān)于Spring Security架構(gòu)以及源碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)

    MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)批量插入數(shù)據(jù),多重forEach循環(huán)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦

    Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦

    這篇文章主要介紹了Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Java中正則表達(dá)式去除html標(biāo)簽

    Java中正則表達(dá)式去除html標(biāo)簽

    Java中正則表達(dá)式去除html的標(biāo)簽,主要目的更精確的顯示內(nèi)容,接下來(lái)通過(guò)本文給大家介紹Java中正則表達(dá)式去除html標(biāo)簽的方法,需要的朋友參考下
    2017-02-02
  • Java中實(shí)現(xiàn)分布式定時(shí)任務(wù)的方法

    Java中實(shí)現(xiàn)分布式定時(shí)任務(wù)的方法

    這篇文章主要介紹了Java中實(shí)現(xiàn)分布式定時(shí)任務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 基于Spring AOP的Log收集匯總

    基于Spring AOP的Log收集匯總

    張三針對(duì)公司現(xiàn)有日志處理系統(tǒng)的不足,采用了SpringAOP技術(shù)和Redis存儲(chǔ),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)性能更高效的日志處理系統(tǒng),該系統(tǒng)通過(guò)SpringAOP的切面攔截功能,捕獲方法調(diào)用信息作為日志內(nèi)容,并將其統(tǒng)一格式化后存儲(chǔ)到Redis中
    2024-10-10
  • spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn)

    spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot項(xiàng)目fat jar瘦身的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • java  List循環(huán)與Map循環(huán)的總結(jié)

    java List循環(huán)與Map循環(huán)的總結(jié)

    這篇文章主要介紹了java List循環(huán)與Map循環(huán)的總結(jié)的相關(guān)資料,并附代碼實(shí)例,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-11-11
  • 一文教會(huì)你使用jmap和MAT進(jìn)行堆內(nèi)存溢出分析

    一文教會(huì)你使用jmap和MAT進(jìn)行堆內(nèi)存溢出分析

    本文介紹關(guān)于jmap和MAT的使用來(lái)進(jìn)行堆內(nèi)存溢出分析,因?yàn)檫@個(gè)內(nèi)存溢出是我們手動(dòng)構(gòu)造出來(lái)的,查找比較簡(jiǎn)單,真的到了生產(chǎn)上面需要我們仔細(xì)排除
    2021-09-09
  • idea微服務(wù)項(xiàng)目服務(wù)如何顯示在同一窗口

    idea微服務(wù)項(xiàng)目服務(wù)如何顯示在同一窗口

    本文介紹了如何在微服務(wù)項(xiàng)目導(dǎo)入時(shí)將所有服務(wù)加入同一窗口中,解決啟動(dòng)項(xiàng)目服務(wù)時(shí)顯示不全的問(wèn)題,通過(guò)點(diǎn)擊左上角的View,選擇ToolWindows,然后選擇Services,使用快捷鍵Alt+8,選擇Spring Boot,就可以將所有服務(wù)加到同一窗口中
    2025-02-02

最新評(píng)論

玉环县| 阿拉善盟| 呼和浩特市| 沛县| 儋州市| 百色市| 镇江市| 兰坪| 延庆县| 高陵县| 玛多县| 京山县| 黑河市| 揭西县| 邮箱| 花莲县| 高邮市| 延长县| 临西县| 喜德县| 宁都县| 随州市| 沂南县| 门头沟区| 灵川县| 台南市| 聊城市| 韩城市| 成武县| 进贤县| 临沧市| 南江县| 内黄县| 舟曲县| 小金县| 宁波市| 西乌珠穆沁旗| 青河县| 老河口市| 孝昌县| 达尔|