Ordering鏄疓uava綾誨簱鎻愪緵鐨勪竴涓妧鍒╁己澶х殑姣旇緝鍣ㄥ伐鍏鳳紝Guava鐨凮rdering鍜孞DK Comparator鐩告瘮鍔熻兘鏇村己銆傚畠闈炲父瀹規槗鎵╁睍錛屽彲浠ヨ交鏉炬瀯閫犲鏉傜殑comparator錛岀劧鍚庣敤鍦ㄥ鍣ㄧ殑姣旇緝銆佹帓搴忕瓑鎿嶄綔涓?/p>
銆銆鏈川涓婃潵璇達紝Ordering 瀹炰緥鏃犻潪灝辨槸涓涓壒孌婄殑Comparator 瀹炰緥銆侽rdering鍙槸闇瑕佷緷璧栦簬涓涓瘮杈冨櫒錛堜緥濡傦紝Collections.max錛夌殑鏂規硶錛屽茍浣垮叾鍙綔涓哄疄渚嬫柟娉曘傚彟澶栵紝Ordering鎻愪緵浜嗛摼寮忔柟娉曡皟鐢ㄥ拰鍔犲己鐜版湁鐨勬瘮杈冨櫒銆?/p>
銆銆涓嬮潰鎴戜滑鐪嬬湅Ordering涓殑涓浜涘叿浣撴柟娉曞拰綆鍗曠殑浣跨敤瀹炰緥銆?/p>
銆銆甯歌鐨勯潤鎬佹柟娉曪細
銆銆natural()錛?/strong>浣跨敤Comparable綾誨瀷鐨勮嚜鐒墮『搴忥紝 渚嬪錛氭暣鏁頒粠灝忓埌澶э紝瀛楃涓叉槸鎸夊瓧鍏擱『搴? 銆銆綆鍗曞疄渚嬶細 銆銆杈撳嚭錛?/p> 銆銆鎿嶄綔鏂規硶錛?/p> 銆銆reverse(): 榪斿洖涓庡綋鍓峅rdering鐩稿弽鐨勬帓搴?
銆銆usingToString() 錛?/strong>浣跨敤toString()榪斿洖鐨勫瓧絎︿覆鎸夊瓧鍏擱『搴忚繘琛屾帓搴忥紱
銆銆arbitrary() 錛?/strong>榪斿洖涓涓墍鏈夊璞$殑浠繪剰欏哄簭錛?鍗砪ompare(a, b) == 0 灝辨槸 a == b (identity equality)銆?鏈韓鐨勬帓搴忔槸娌℃湁浠諱綍鍚箟錛?浣嗘槸鍦╒M鐨勭敓鍛藉懆鏈熸槸涓涓父閲忋?/p>import java.util.List;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
public class OrderingTest {
@Test
public void testStaticOrdering(){
List<String> list = Lists.newArrayList();
list.add("peida");
list.add("jerry");
list.add("harry");
list.add("eva");
list.add("jhon");
list.add("neron");
System.out.println("list:"+ list);
Ordering<String> naturalOrdering = Ordering.natural();
Ordering<Object> usingToStringOrdering = Ordering.usingToString();
Ordering<Object> arbitraryOrdering = Ordering.arbitrary();
System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));
System.out.println("usingToStringOrdering:"+ usingToStringOrdering.sortedCopy(list));
System.out.println("arbitraryOrdering:"+ arbitraryOrdering.sortedCopy(list));
}
}list:[peida, jerry, harry, eva, jhon, neron]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
usingToStringOrdering:[eva, harry, jerry, jhon, neron, peida]
arbitraryOrdering:[neron, harry, eva, jerry, peida, jhon]
銆銆nullsFirst(): 榪斿洖涓涓皢null鏀懼湪non-null鍏冪礌涔嬪墠鐨凮rdering錛屽叾浠栫殑鍜屽師濮嬬殑Ordering涓鏍鳳紱
銆銆nullsLast()錛氳繑鍥炰竴涓皢null鏀懼湪non-null鍏冪礌涔嬪悗鐨凮rdering錛屽叾浠栫殑鍜屽師濮嬬殑Ordering涓鏍鳳紱
銆銆compound(Comparator)錛氳繑鍥炰竴涓嬌鐢–omparator鐨凮rdering錛孋omparator浣滀負絎簩鎺掑簭鍏冪礌錛屼緥濡傚bug鍒楄〃榪涜鎺掑簭錛屽厛鏍規嵁bug鐨勭駭鍒紝鍐嶆牴鎹紭鍏堢駭榪涜鎺掑簭錛?br style="margin: 0px; padding: 0px;" />銆銆lexicographical()錛氳繑鍥炰竴涓寜鐓у瓧鍏稿厓绱犺凱浠g殑Ordering錛?br style="margin: 0px; padding: 0px;" />銆銆onResultOf(Function)錛氬皢function搴旂敤鍦ㄥ悇涓厓绱犱笂涔嬪悗, 鍦ㄤ嬌鐢ㄥ師濮媜rdering榪涜鎺掑簭錛?br style="margin: 0px; padding: 0px;" />銆銆greatestOf(Iterable iterable, int k)錛氳繑鍥炴寚瀹氱殑絎琸涓彲榪唬鐨勬渶澶х殑鍏冪礌錛屾寜鐓ц繖涓粠鏈澶у埌鏈灝忕殑欏哄簭銆傛槸涓嶇ǔ瀹氱殑銆?br style="margin: 0px; padding: 0px;" />銆銆leastOf(Iterable<E> iterable,int k)錛氳繑鍥炴寚瀹氱殑絎琸涓彲榪唬鐨勬渶灝忕殑鍏冪礌錛屾寜鐓ц繖涓粠鏈灝忓埌鏈澶х殑欏哄簭銆傛槸涓嶇ǔ瀹氱殑銆?br style="margin: 0px; padding: 0px;" />銆銆isOrdered(Iterable)錛氭槸鍚︽湁搴忥紝Iterable涓嶈兘灝戜簬2涓厓绱犮?br style="margin: 0px; padding: 0px;" />銆銆isStrictlyOrdered(Iterable)錛氭槸鍚︿弗鏍兼湁搴忋傝娉ㄦ剰錛孖terable涓嶈兘灝戜簬涓や釜鍏冪礌銆?br style="margin: 0px; padding: 0px;" />銆銆sortedCopy(Iterable)錛氳繑鍥炴寚瀹氱殑鍏冪礌浣滀負涓涓垪琛ㄧ殑鎺掑簭鍓湰銆?/p>package com.peidasoft.guava.base;
import java.util.List;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
public class OrderingTest {
@Test
public void testOrdering(){
List<String> list = Lists.newArrayList();
list.add("peida");
list.add("jerry");
list.add("harry");
list.add("eva");
list.add("jhon");
list.add("neron");
System.out.println("list:"+ list);
Ordering<String> naturalOrdering = Ordering.natural();
System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));
List<Integer> listReduce= Lists.newArrayList();
for(int i=9;i>0;i--){
listReduce.add(i);
}
List<Integer> listtest= Lists.newArrayList();
listtest.add(1);
listtest.add(1);
listtest.add(1);
listtest.add(2);
Ordering<Integer> naturalIntReduceOrdering = Ordering.natural();
System.out.println("listtest:"+ listtest);
System.out.println(naturalIntReduceOrdering.isOrdered(listtest));
System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(listtest));
System.out.println("naturalIntReduceOrdering:"+ naturalIntReduceOrdering.sortedCopy(listReduce));
System.out.println("listReduce:"+ listReduce);
System.out.println(naturalIntReduceOrdering.isOrdered(naturalIntReduceOrdering.sortedCopy(listReduce)));
System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(naturalIntReduceOrdering.sortedCopy(listReduce)));
Ordering<String> natural = Ordering.natural();
List<String> abc = ImmutableList.of("a", "b", "c");
System.out.println(natural.isOrdered(abc));
System.out.println(natural.isStrictlyOrdered(abc));
System.out.println("isOrdered reverse :"+ natural.reverse().isOrdered(abc));
List<String> cba = ImmutableList.of("c", "b", "a");
System.out.println(natural.isOrdered(cba));
System.out.println(natural.isStrictlyOrdered(cba));
System.out.println(cba = natural.sortedCopy(cba));
System.out.println("max:"+natural.max(cba));
System.out.println("min:"+natural.min(cba));
System.out.println("leastOf:"+natural.leastOf(cba, 2));
System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));
System.out.println("leastOf list:"+naturalOrdering.leastOf(list, 3));
System.out.println("greatestOf:"+naturalOrdering.greatestOf(list, 3));
System.out.println("reverse list :"+ naturalOrdering.reverse().sortedCopy(list));
System.out.println("isOrdered list :"+ naturalOrdering.isOrdered(list));
System.out.println("isOrdered list :"+ naturalOrdering.reverse().isOrdered(list));
list.add(null);
System.out.println(" add null list:"+list);
System.out.println("nullsFirst list :"+ naturalOrdering.nullsFirst().sortedCopy(list));
System.out.println("nullsLast list :"+ naturalOrdering.nullsLast().sortedCopy(list));
}
}
//============杈撳嚭==============
list:[peida, jerry, harry, eva, jhon, neron]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
listtest:[1, 1, 1, 2]
true
false
naturalIntReduceOrdering:[1, 2, 3, 4, 5, 6, 7, 8, 9]
listReduce:[9, 8, 7, 6, 5, 4, 3, 2, 1]
true
true
true
true
isOrdered reverse :false
false
false
[a, b, c]
max:c
min:a
leastOf:[a, b]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
leastOf list:[eva, harry, jerry]
greatestOf:[peida, neron, jhon]
reverse list :[peida, neron, jhon, jerry, harry, eva]
isOrdered list :false
isOrdered list :false
add null list:[peida, jerry, harry, eva, jhon, neron, null]
nullsFirst list :[null, eva, harry, jerry, jhon, neron, peida]
nullsLast list :[eva, harry, jerry, jhon, neron, peida, null]
]]>