java:当字符串参数之一为空时我应该返回什么值."int compareTo(String,String)"

标签 java string compare return-value

我正在尝试创建自己的“int compareTo(String,String) ”方法。我想知道如果我发现任何字符串为空,我应该返回什么?抛出异常? return -1 是compareTo 的可能结果...

public int compare(String st1, String st2){
    if (st1 == null) || st2 == null ) return ..
    ...
    //logic
    ...
}

比较定义:

public int compareTo(String anotherString)

按字典顺序比较两个字符串。比较基于字符串中每个字符的 Unicode 值。将此 String 对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较。如果此 String 对象按字典顺序位于参数字符串之前,则结果为负整数。如果此 String 对象按字典顺序位于参数字符串后面,则结果为正整数。如果字符串相等,则结果为零;当 equals(Object) 方法返回 true 时,compareTo 返回 0。

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)

最佳答案

只要您尊重 Comparator 的契约(Contract),就由您决定。

您可以抛出NullPointerException。这意味着您认为将 null 传递给比较器是一个错误。

您可以选择使 null 小于任何非 null 字符串。在这种情况下,compare(null, "nonNull") 必须返回负整数,compare("nonNull", null) 必须返回正整数,并且 Compare(null, null) 必须返回 0。

或者您可以选择使 null 大于任何非 null 字符串。在这种情况下,compare(null, "nonNull") 必须返回正整数,compare("nonNull", null) 必须返回负整数,并且 Compare(null, null) 必须返回 0。

如果任何参数为 null,则返回 -1 违反约定:这意味着 null 既小于又大于非空字符串,具体取决于参数的顺序。

关于java:当字符串参数之一为空时我应该返回什么值."int compareTo(String,String)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031525/

相关文章:

c++ - 在 C++ 中检测小声音效果

javafx制作按钮网格

java - 如何使用 JSP 和 JAVA 读取 URL

java - 如何从 HashMap 中返回键列表?

java - 正则表达式:按名称、重量/数量和价格拆分字符串

python - “int”对象不可迭代

java - 方法参数顺序的改变能叫方法重载吗?

javascript - 如何让 lodash _.replace 字符串中所有出现的地方?

c++ - 比较 C++ 模板中的字符串文字

php - Sql 查询查找两个给定日期之间的 View 百分比差异