Что быстрее, равноIgnoreCase или compareToIgnoreCase - PullRequest
7 голосов
/ 08 мая 2009

В приложении Java, если у меня есть возможность выбрать следующие методы сравнения

equalsIgnoreCase (String anotherString)

compareToIgnoreCase (String str)

Какой из них быстрее?

Ответы [ 3 ]

30 голосов
/ 08 мая 2009

equalsIgnoreCase может быть намного быстрее. Например, рассмотрим две строки, которые начинаются с одних и тех же 10000 символов, но одна из них имеет дополнительный символ в конце. equalsIgnoreCase может вернуться сразу; compareToIgnoreCase должен пройти до конца строки, чтобы увидеть разницу.

Но обычно я бы пошел с тем, что выражает ваше намерение лучше. Это хорошо работает и для производительности: если я правильно скажу, что equalsIgnoreCase по крайней мере так же быстро, как compareToIgnoreCase, это означает, что вы должны использовать это там, где можете - если вам нужен фактический заказ, вы все равно используйте compareToIgnoreCase.

9 голосов
/ 08 мая 2009

если вы беспокоитесь о выступлениях ... измерьте

6 голосов
/ 08 мая 2009

Просмотр источника для 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 также проверяет идентичность ссылки и длину символа, что может быть намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...