按字典顺序比较两个可能为空的Java字符串

时间:2015-06-17 05:17:36

标签: java string null

A或{{1}时,是否有JDK方法或Comparator可以比较两个字符串BA 按字典顺序 (或两者,或两者都不)可能是B

我不太关心null值是排在第一位还是最后一位。

请注意,我不是在寻找Objects#equals(Object a, Object b)。我正在寻找一个带有以下原型的JDK方法:

null

或者,也可以是

行的JDK类
public int compare(String a, String b) ...

如果JDK中没有任何内容可以执行此操作,那么广泛使用的开源库中的内容也可以。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

Guava提供了非常有用的Ordering类(more info)。它具有流畅的界面,并且扩展了Comparator,因此您可以在任何使用Comparator的地方使用它。

Comparator<String> nullSafeComparator = Ordering.<String>natural().nullsLast();

答案 2 :(得分:0)

字符串compareTo完全相同,您可以为将调用此compareTo函数的字符串添加空检查,以便它处理null值 -

String s1 = "Hello";
String s2 = "bye";
System.out.println(s1.compareTo(s2));
>> -26

你的条件看起来像 -

if(s1 != null && s1.compareTo(s2) > 0)

此方法的返回值为int,可解释如下:

  • 返回&lt; 0然后调用方法的String按字典顺序排列 第一个(在字典中排在第一位)
  • 返回== 0然后是两个字符串 按字典顺序排列
  • 返回&gt; 0然后是参数 传递给compareTo方法首先按字典顺序进行。