2014-12-04 67 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