Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Вопрос про stream api java 8

#java #lambda #java_8 #java_stream


Здравствуйте, имеется 2 стринговых листа List fileList и List arr,
требуется вывести сколько слов в fileList содержатся в arr, сделал так:

fileList
        .stream()
        .filter(s -> arr
                        .stream()
                        .anyMatch(s::equals)
        )
        .count()


Правильный ли такой подход? Или есть какой-то более лучший способ?
    


Ответы

Ответ 1



Быстрее и проще будет воспользоваться пересечением множеств: Set set = new HashSet<>(fileList); set.retainAll(new HashSet(arr)); int count = set.size(); А если уж использовать стримы, то не плодить их для каждого элемента. Эффективнее будет так: long count = fileList.stream() .filter(arr::contains) .count();

Комментариев нет:

Отправить комментарий