Здравствуйте, имеется 2 стринговых листа List<String> fileList и List<String> arr, требуется вывести сколько слов в fileList содержатся в arr, сделал так:
fileList
.stream()
.filter(s -> arr
.stream()
.anyMatch(s::equals)
)
.count()
Правильный ли такой подход? Или есть какой-то более лучший способ?
Быстрее и проще будет воспользоваться пересечением множеств:
Set<String> set = new HashSet<>(fileList);
set.retainAll(new HashSet<String>(arr));
int count = set.size();
А если уж использовать стримы, то не плодить их для каждого элемента. Эффективнее будет так:
long count = fileList.stream()
.filter(arr::contains)
.count();
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники