Фильтр списка в Java8 с использованием метода isPresent - PullRequest
7 голосов
/ 23 марта 2019

У меня есть один список, который содержит несколько строковых значений.Я хочу повторить список по сравнению с другой строкой.Только если другая строка не соответствует ни одному элементу в списке, тогда я должен войти в цикл.Я попробовал что-то вроде ниже, но это не сработало.Любой другой альтернативный подход, чтобы сделать то же самое в Java 8?

Примечание: в цикле я добавляю еще несколько элементов в тот же список.Следовательно, чтобы избежать ConcurrentModificationException, я использую условие if для своей проверки.

List<String> mylist = new ArrayList<>();
mylist.add("test");
mylist.add("test1");

if(mylist.stream()
        .filter(str -> !(str.equalsIgnoreCase("test")))
        .findFirst()
        .isPresent()) {
    System.out.println("Value is not Present");
}

Ответы [ 3 ]

9 голосов
/ 23 марта 2019

Вы должны использовать Stream#noneMatch для этого. Это сделает ваш код более читабельным и кратким. Кроме того, старайтесь избегать использования большого количества логики в вашем операторе if, извлеките максимум из читаемых переменных

List<String> mylist = new ArrayList<>();
mylist.add("test");
mylist.add("test1");

Predicate<String> equalsIgnoreCasePredicate = str -> str.equalsIgnoreCase("test");
boolean noneMatchString = mylist.stream().noneMatch(equalsIgnoreCasePredicate);

if (noneMatchString) {
    System.out.println("Value is not Present");
}
9 голосов
/ 23 марта 2019

Вы должны использовать noneMatch()

if (mylist.stream().noneMatch(str -> str.equalsIgnoreCase(testString))) {
    System.out.println("Value is not Present");
}
0 голосов
/ 23 марта 2019

Выше можно достичь без использования Stream API.Ниже приведено возможное решение

String searchValue = "COW";
List<String> list = Arrays.asList("CAT", "DOG");

if(!list.contains(searchValue)){
    System.out.println("Value is not Present");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...