2011-06-19 16 views
7

Obecnie używam następujących 2 fragmentów kodu w 2 różnych miejscach, aby utworzyć posortowaną, niezmienną listę.Case Niewrażliwe sortowanie przy użyciu Google Guava

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

i

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

Jednak to sprawia, że ​​'zamawiania' przypadek wrażliwy.

Jak używać Apis guava zrobić CASE- niewrażliwy klasyfikowane niezmienny listę?

Odpowiedz

15

Wierzę, że będziesz musiał użyć metody from z kompilatorem String.CASE_INSENSITIVE_ORDER, podobnym do tego.

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

ok to wydaje się działać przy użyciu Ordering.natural jednak mam inne miejsce, w którym używam Ordering.usingToString(). ImmutableSortedCopy(), jak to będzie działać w tym przypadku? – pdeva

+2

'od' przyjmuje dowolny komparator. W przypadku 'toString' trzeba przed porównaniem utworzyć własny komparator i zrobić coś w stylu' toString(). DoLowerCase() '. Twoje zdrowie! –

+6

W przypadku zamiennika 'usingToString()' skomponowałbym 'Ordering' za pomocą' Functions.toStringFunction() ', np. 'return Ordering.from (String.CASE_INSENSITIVE_ORDER) .onResultOf (Functions.toStringFunction()). immutableSortedCopy (iterable);' –

Powiązane problemy