Почему не работает метод со Stream?
Не пойму, почему не работает anyMatch? Когда вводится лист с операторами, которых нет в списке operators, noneMatch отрабатывает корректно. Но когда один из операторов присутствует, anyMatch почему-то не отрабатывает. И на экран выводится результат из noneMatch. Что я делаю не так? Как исправить метод?
static void isOperCorrect(ArrayList<Character> operList) {
ArrayList<Character> operators = new ArrayList<>(Arrays.asList('+', '-', '*', '/'));
for (int i = 0; i < 2; i++) {
boolean noneMatch = operList.stream().noneMatch(c -> c.equals(operators));
boolean anyMatch = operList.stream().anyMatch(c -> c.equals(operators));
if (noneMatch) {
System.out.println("оператора нет в листе");
} else if(anyMatch) {
System.out.println("есть какой-то из операторов");
}
}
}
Ответы (1 шт):
Автор решения: nPaBllla
→ Ссылка
Можете сделать так, то есть пройтись по каждому элементу operList и проверить есть он в operators или нет
operList.forEach(c -> {
if (operators.contains(c)) {
System.out.println("something");
} else {
System.out.println("something other");
}
});
Или же использовать noneMatch, anyMatch
boolean noneMatch = operList.stream().noneMatch(operators::contains);
boolean anyMatch = operList.stream().anyMatch(operators::contains);