Зависит от варианта использования.
Если вы выполняете сравнение строк один к одному, equalsIgnoreCase, вероятно, быстрее, поскольку внутренне он просто прописывает каждый символ в верхнем регистре, поскольку он перебирает строки (код ниже из java.lang.String), которыйнемного быстрее, чем верхний или нижний регистр, перед тем как выполнить такое же сравнение:
if (ignoreCase)
{
// If characters don't match but case may be ignored,
// try converting both characters to uppercase.
// If the results match, then the comparison scan should
// continue.
char u1 = Character.toUpperCase(c1);
char u2 = Character.toUpperCase(c2);
if (u1 == u2) {
continue;
}
// Unfortunately, conversion to uppercase does not work properly
// for the Georgian alphabet, which has strange rules about case
// conversion. So we need to make one last check before
// exiting.
if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
continue;
}
}
Но когда возникает ситуация, когда вы хотите выполнить поиск в структуре данных, полной строк (особенно строк, которые находятся вUS Latin / ASCII) без учета регистра, будет быстрее обрезать / опустить строковые строки для проверки и поместить их в нечто вроде HashSet или HashMap.
Это лучше, чем вызывать equalsIgnoreCase длякаждый элемент списка, потому что небольшой выигрыш в производительности equalsIgnoreCase () отменяется тем фактом, что вы в основном делаете модифицированную версию contains () для массива, который равен O (n).С предварительно нормализованной строкой вы можете проверять весь список строк с помощью единственного вызова contains (), который выполняется в O (1).