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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

一 創(chuàng)建排序器

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

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

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

并且提供了鏈?zhǔn)秸{(diào)用方法,來定制和增強(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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久久国产乱子伦精品岳两 | 久久国产首页 | 黄色小视频网 | 亚洲国产欧美在线观看 | 国产呦系列 欧美呦 日韩呦 | 黄色的视频免费 | 久久午夜国产片 | 俄罗斯aa一级毛片 | 青青草国产97免久久费观看 | 国产三级电影院 | 九九九色视频在线观看免费 | 天天玩夜夜操 | 人善交zzzxxx另类 | 国产骚| 98精品国产综合久久 | 一级毛片日韩a欧美 | 视频在线亚洲 | 欧美激情视频一区二区免费 | 色婷婷亚洲综合五月 | 国产菲菲视频在线观看 | 久久99精品波多结衣一区 | 国产成+人欧美+综合在线观看 | 亚洲精品高清国产一线久久97 | 91精品国产露脸在线观看 | 中国一级特黄视频 | 亚洲国产精品第一区二区 | 亚洲午夜在线观看 | 国产精品久草 | 久久这里只有精品免费看青草 | 99精品国产美女福到在线不卡 | 欧美黑粗大| 日韩欧美一区二区三区四区 | 中文字幕 日韩在线 | 成年人黄色大全 | 激情爱爱的免费视频 | 国产成人午夜精品5599 | 亚洲欧美国产一区二区三区 | 国产无限资源在线观看 | 国产女主播在线播放 | 97理论三级九七午夜在线观看 | 久久久免费观成人影院 |