Eu tenho uma lista que contém alguns valores String. Eu quero fazer uma iteração da lista comparando com outra cadeia. Só se outra string não combinar com qualquer elemento da lista, então eu deveria entrar no loop. Eu tentei algo como abaixo, mas não funcionou. Qualquer outra abordagem alternativa para fazer o mesmo em Java 8?
Nota: No loop eu estou adicionando mais alguns elementos para a mesma lista. Assim, para evitar ConcurrentModificationException
, estou usando uma condição se para o meu validação.
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");
}
Você deve estar usando Stream#noneMatch
para isso. Ele vai fazer seu código mais legível e mais concisa. Além disso, tente evitar colocar a muito dentro da lógica de sua declaração se, extrair um máximo de variáveis legíveis
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");
}