Tishy Jetzt:
Ich möchte die Größe reduzieren (einige Elemente löschen) einer geordneten Liste von Kartenobjekten. Alle Objekte der Liste sollen verworfen werden, wenn eine bestimmte Bedingung erfüllt ist. Und wenn dieser Zustand für alle folgenden Elemente dieser Liste getroffen wird, soll in der Liste bleibt. Ich habe folgendes Stück Code. Ich möchte das gleiche mit Java 8 zu tun.
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;
}
auch:
Sie suchen nach einer dropWhile
Operation, aber eine eingebaute Implementierung das würde erfordern Java-9 und höher:
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());
}
Anmerkung : Ich habe eine Bearbeitung auf den vorhandenen Code aus NPE zu vermeiden , wenn es sein könnte , Map
in der List
ohne den Schlüssel service_id
.