亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java Guava排序器Ordering原理及代碼實例

瀏覽:3日期:2022-08-21 09:04:13

一 創建排序器

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

本質上來說,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
相關文章:
主站蜘蛛池模板: 麻豆国产在线观看一区二区 | 春水堂在线 | 国产麻豆永久视频 | 成人精品一区二区不卡视频 | 欧美精品一区二区三区久久 | 亚洲成熟 | 国产在线不卡一区 | 一区二区视频在线观看高清视频在线 | 欧美成人丝袜一区二区 | 亚洲网站免费观看 | 国产精品一区久久 | 日韩欧美一级毛片在线 | 成年美女毛片黄网站色奶头大全 | 香蕉97超级碰碰碰碰碰久 | 国产精品爱久久久久久久9999 | 污污网站在线免费观看 | 6080午夜一级毛片免费看 | 尤物视频免费观看 | 国产综合色在线视频播放线视 | 精品国产区一区二区三区在线观看 | 日韩在线一区二区三区免费视频 | 青青久久久国产线免观 | 国产一级淫片a免费播放口欧美 | 一区二区三区视频观看 | 国产美女激情视频无打码 | 伊人久久综合影院 | 婷婷亚洲久悠悠色在线播放 | 亚洲欧美制服丝袜一区二区三区 | 色噜噜五月综合激情久久爱 | 九草视频在线 | 麻豆免费视频网站入口 | 黄色大全免费看 | 亚洲一级片网站 | 国产一级精品高清一级毛片 | 日韩欧美卡一卡二卡新区 | 青青操免费在线视频 | 久久精品国产一区二区 | 亚洲一色 | 在线高清视频观看vvvv | 国产色视频一区 | 日韩欧美在线视频观看 |