Вы можете использовать фильтр:
long count = list.stream().filter(e -> e.equals(someString)).count();
Но это делается в O(n)
. Есть лучший способ ... Вместо обычного списка, используйте Set
, поэтому конвертируйте List
в Set
и проверьте, существует ли он:
Set set = new HashSet(list);
if (set.contains(someString)) return true;
Если вы конвертировали список один раз до этого любая проверка и просто использование этого набора позже, проверка, содержится ли он, выполняется в O(1)
. Зависит от того, как вы получаете список на первом месте? Есть ли у вас список в начале программы? Затем составьте список c в классе. Вы получите это позже? Как часто это меняется? Тем не менее, даже если это так, убедитесь, что его обновление отделено, и при этом у вас все равно будет O(1)
.