Ahora Tishy:
Quiero reducir el tamaño (borrar algunos elementos) de una lista ordenada de objetos del mapa. Todos los objetos de la lista deben ser desechados a menos que se cumpla una determinada condición. Y cuando esa condición se cumple todos los siguientes elementos de esa lista debe permanecido en la lista. He siguiente fragmento de código. Quiero hacer lo mismo con Java 8.
public List<Map<String, String>> doAction(List<Map<String, String>> dataVoMap) {
List<Map<String,String>> tempMap = new ArrayList<>();
boolean found = false;
for(Map<String, String> map: dataVoMap){
if(map.get("service_id").equalsIgnoreCase("passed value") || found){
found = true;
tempMap.add(map);
}
}
dataVoMap = tempMap;
return dataVoMap;
}
también:
Que busca una dropWhile
operación, sino una aplicación incorporada de que requeriría de Java-9 y superior:
public List<Map<String, String>> doAction(List<Map<String, String>> dataVoMap) {
return dataVoMap.stream()
.dropWhile(m -> !"passed value".equalsIgnoreCase(m.get("service_id")))
.collect(Collectors.toList());
}
Nota : He hecho una edición con el código existente para evitar NPE cuando podría haber una Map
en el List
sin la llave service_id
.