2011-06-19 12 views
7

現在2つの異なる場所で次の2つのコードを使用してソートされた不変のリストを作成しています。大文字小文字を区別しないGoogle Guavaを使用したソート

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

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

しかし、これは '発注' の場合敏感になります。

guava apisを使用して大文字小文字を区別するにはどうすればよいですか鈍感なソートされた不変リスト?

答えて

15

このようにString.CASE_INSENSITIVE_ORDERコンパレータでfromメソッドを使用する必要があると思います。

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

Ordering.naturalを使用した場合、[OK]これは動作しているようです、しかし私は)私がOrdering.usingToStringを(使用し、別の場所を持っている。immutableSortedCopy()、それはどのようにこのケースで動作しますか? – pdeva

+2

'from'は任意のコンパレータを使用します。 'toString'の場合、あなた自身のコンパレータを作成し、比較する前に' toString()。toLowerCase() 'のようなことをする必要があります。乾杯! –

+6

'usingToString()'置換のために、 'Functions.toStringFunction()'で 'Ordering'を作成します。 'return Ordering.from(String.CASE_INSENSITIVE_ORDER).onResultOf(Functions.toStringFunction())。immutableSortedCopy(イテラブル);' –

関連する問題