2011-06-19 54 views
7

當前我在2個不同的地方使用以下2段代碼來創建排序的不變列表。使用Google Guava的案例不敏感排序

return Ordering.natural().immutableSortedCopy(iterable); 

return Ordering.usingToString().immutableSortedCopy(machines); 

然而,這使得 '排序' 的情況下敏感

如何使用番石榴apis製作案例不敏感排序不可變列表?

回答

15

我相信你將需要使用from方法與String.CASE_INSENSITIVE_ORDER比較器,就像這樣。

return Ordering.from(String.CASE_INSENSITIVE_ORDER).immutableSortedCopy(iterable); 
+0

確定這似乎使用Ordering.natural時上班,但是我有,我用Ordering.usingToString()。immutableSortedCopy(),怎麼會在這種情況下工作的另一個地方? – pdeva

+2

'from'取任何比較器。在'toString'情況下,您需要創建自己的比較器,並在比較之前執行'toString()。toLowerCase()'等操作。乾杯! –

+6

對於'usingToString()'替換,我會用'Functions.toStringFunction()'來編寫你的'Ordering'。 '返回Ordering.from(String.CASE_INSENSITIVE_ORDER).onResultOf(Functions.toStringFunction())。immutableSortedCopy(iterable);' –