equalsIgnoreCase
może być dużo szybciej. Rozważmy na przykład dwa ciągi, które zaczynają się od tych samych 10 000 znaków - ale jeden z nich ma na końcu dodatkową postać. equalsIgnoreCase
może natychmiast wrócić; compareToIgnoreCase
musi iterować do końca łańcucha, aby zobaczyć różnicę.
Ale generalnie chciałbym pójść z tym, który lepiej wyraża twój zamiar. Działa to również dobrze dla wydajności: zakładając, że mam rację mówiąc, że equalsIgnoreCase
jest co najmniej tak szybki jak compareToIgnoreCase
, to znaczy, że powinieneś użyć tego, gdzie możesz - jeśli potrzebujesz rzeczywistego zamówienia, musisz mimo to użyć compareToIgnoreCase
.
@Dvvoter: Daj powód? –
equalsIgnoreCase() ma pewne zasadnicze różnice w porównaniu do ToToIgnoreCase(). Dla 1, testuje równość == najpierw, zanim faktycznie zobaczy, czy wszystkie znaki są takie same. CompareTo zawsze dokona pełnego porównania znaków, ale nie uwzględni locale. Więc naprawdę musisz wiedzieć, które porównanie zastosować, a następnie porównać je. –