在java应用程序中,假设我可以选择以下比较方法
equalsIgnoreCase(String anotherString)
compareToIgnoreCase(String str)
哪一个更快?
答案 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
也检查引用标识和字符长度,这可能非常多更快。