#java #lambda #java_8 #java_stream
Здравствуйте, имеется 2 стринговых листа ListfileList и List arr, требуется вывести сколько слов в fileList содержатся в arr, сделал так: fileList .stream() .filter(s -> arr .stream() .anyMatch(s::equals) ) .count() Правильный ли такой подход? Или есть какой-то более лучший способ?
Ответы
Ответ 1
Быстрее и проще будет воспользоваться пересечением множеств: Setset = new HashSet<>(fileList); set.retainAll(new HashSet (arr)); int count = set.size(); А если уж использовать стримы, то не плодить их для каждого элемента. Эффективнее будет так: long count = fileList.stream() .filter(arr::contains) .count();
Комментариев нет:
Отправить комментарий