Есть ли способ объединить два цикла for, используя потоки в Java 8? - PullRequest
4 голосов
/ 26 марта 2019

У меня есть два списка, один из которых имеет тип String, а другой - какой-то объект-сущность. Как перебрать эти два списка или сравнить его с помощью Java 8

List<Admin> admin= new ArrayList<>();

for (Admin ah : subProducers) {
    for (String value : values) {
        if (ah.getFirstName().contains(value) || ah.getLastName().contains(value)) {
            admin.add(ah);
        }
    }
}

В настоящее время я использую цикл for для проверки этого условия, и я не нахожу лучшего способа объединить его с использованием потоков java 8.

1 Ответ

7 голосов
/ 26 марта 2019

Что-то вроде anyMatch с вложенными потоками:

subProducers.stream()
            .filter(a -> values.stream()
                               .anyMatch(b -> a.getFirstName().contains(b)
                                           || a.getLastName().contains(b)))
            .collect(Collectors.toList())
...