2011-06-19 25 views
7

Hiện tại tôi đang sử dụng 2 đoạn mã sau đây ở 2 vị trí khác nhau để tạo danh sách được sắp xếp, không thay đổi.Phân loại phân biệt chữ hoa chữ thường bằng Google Guava

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

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

Tuy nhiên, điều này làm cho các 'đặt hàng' trường hợp nhạy cảm .

Làm cách nào để sử dụng apava ổi để tạo ra một trường hợp- không nhạy cảm sắp xếp danh sách không thể thay đổi?

Trả lời

15

Tôi tin rằng bạn sẽ cần sử dụng phương pháp from với bộ so sánh String.CASE_INSENSITIVE_ORDER, như thế này.

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

ok này dường như làm việc khi sử dụng Ordering.natural, tuy nhiên tôi có một nơi mà tôi sử dụng Ordering.usingToString(). ImmutableSortedCopy(), làm thế nào sẽ cho nó hoạt động trong trường hợp này? – pdeva

+2

'from' có bất kỳ so sánh nào. Trong trường hợp 'toString', bạn sẽ cần phải tạo trình so sánh của riêng bạn và làm một cái gì đó như' toString(). ToLowerCase() 'trước khi so sánh. Chúc mừng! –

+6

Đối với 'replaceToString()' thay thế, tôi sẽ soạn 'Ordering' của bạn với' Functions.toStringFunction() ', ví dụ: 'return Ordering.from (String.CASE_INSENSITIVE_ORDER) .onResultOf (Hàm.toStringFunction()). immutableSortedCopy (lặp lại);' –

Các vấn đề liên quan