Reduzieren Sie die Größe der Liste mit Java 8 Stream

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 dropWhileOperation, 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 , Mapin der Listohne den Schlüssel service_id.

Ich denke du magst

Origin http://10.200.1.11:23101/article/api/json?id=430150&siteId=1
Empfohlen
Rangfolge