En Java 8, ¿puedo usar secuencias para filtrar una cadena parcial?
Supongamos que tengo una lista de animales como:
Brown Bear Black Bear Black Crow Red Herring Owl Sparrow Blackbacked Flocking CrowSupongamos que todos los nombres de los animales están en una lista de objetos de animales
public class Animal{ public name; public animalType; }¿Hay alguna forma de encontrar todos los animales que tienen negro, independientemente del caso, en algún lugar del nombre? Algo como lo siguiente...
List<Animal> filtList = employeeList.stream() .filter(x -> "%Black%".toUpperCase().equals(x.getLastName().toUpper())) .collect(Collectors.toList());No hay un método toUpper() para String .
Es toUpperCase() y también necesita usar contains() para marcar "NEGRO" en cualquier lugar de toda la cadena, por lo que el código debería ser simple como se muestra a continuación:
List<Employee> filtList = inputList.stream(). filter(value -> value.toUpperCase().//convert to uppercase for checking contains("BLACK")).//filter values containing black collect(Collectors.toList());//collect as listUsar expresiones regulares:
List<Animal> filtList = list.stream() .filter(x -> x.getName().matches("(?i).*black.*")) .collect(Collectors.toList()); El indicador de expresión regular "(?)" significa "ignorar mayúsculas y minúsculas".