哪个更快,equalsIgnoreCase或compareToIgnoreCase

时间:2009-05-08 09:24:13

标签: java string

在java应用程序中,假设我可以选择以下比较方法

equalsIgnoreCase(String anotherString)

compareToIgnoreCase(String str)

哪一个更快?

3 个答案:

答案 0 :(得分:30)

equalsIgnoreCase 可以快得多。例如,考虑两个以相同的10,000个字符开头的字符串 - 但其中一个字符串最后有一个额外的字符。 equalsIgnoreCase可以立即返回; compareToIgnoreCase必须迭代到字符串的末尾以查看差异。

但一般来说,我会选择更好地表达你的意图。这也很适合性能:假设我说equalsIgnoreCase至少和compareToIgnoreCase一样快,这意味着你应该尽可能地使用它 - 如果你需要实际的订购,你无论如何,我必须使用compareToIgnoreCase

答案 1 :(得分:9)

如果你担心表演...... 测量它

答案 2 :(得分:5)

查看java.lang.String的源代码

 public boolean equalsIgnoreCase(String anotherString) {
    return (this == anotherString) ? true :
           (anotherString != null) && (anotherString.count == count) &&
       regionMatches(true, 0, anotherString, 0, count);
 }

所以,在它按字符查看实际的字符串之前(也以compareToIgnoreCase的类似方式发生),equalsIgnoreCase也检查引用标识和字符长度,这可能非常多更快。