2014-12-04 62 views
1

我有以下值的集合:[「LA」,「INTL」,「ca」,null]。番石榴字符串排序

我需要按字母排序,不區分大小寫,而不會拋出任何可能的NPE。

如何正確使用番石榴庫?

在此先感謝。

回答

6

可以用戶Ordering#nullsFirst()(或Ordering#nullsLast())照顧null條目在列表中。

Ordering實現java.util.Comparator界面,您可以使用它像:

List<String> myList = Arrays.asList("LA", "INTL", "ca", null); 
Ordering<String> ordering = Ordering.from(String.CASE_INSENSITIVE_ORDER).nullsFirst(); 
Collections.sort(myList, ordering); 
+2

我從來沒有注意到'Ordering'實際上實現了'比較器'的事實! +1 – fge 2014-12-04 14:20:42

1

使用Ordering類:

Ordering.from(String.CASE_INSENSITIVE_ORDER).nulls{First,Last}() 
    .sortedCopy(yourList); 
+0

它排序按字母順序排列? – MadCat45 2014-12-04 14:18:04

+0

它根據char值進行排序,它發生的情況是,字符的值與char相同,所以答案是肯定的) – fge 2014-12-04 14:19:36

+0

['String.CASE_INSENSITIVE_ORDER'](http:// docs .oracle.com/javase/7/docs/api/java/lang/String.html#CASE_INSENSITIVE_ORDER):「**自:** 1.2」。與Java 8沒有絲毫聯繫。但是,如果你想排序自然可讀的文本,你可以考慮使用['Collat​​or'](http://docs.oracle.com/javase/7/docs/api/java/text /Collat​​or.html),自1.0 ... – Holger 2014-12-04 14:24:14