2016-07-21 16 views
-2

Ich habe eine Arraylist von HashMapAuszugswerte aus einer Arraylist von HashMap mit java8

wie kann ich tun mit Java 8 und .map .filter Techniken eine Arraylist von String von einigem Wert in der HashMap bekommen

für exemple

String Daten gleich zu

[{ 
    "schema": [{ 
     "name": "#VALUE", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }, { 
     "name": "@ref", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }], 
    "values": [null, 442256] 
}, { 
    "schema": [{ 
     "name": "#VALUE", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }, { 
     "name": "@ref", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }], 
    "values": [null, 4192463331] 
}, { 
    "schema": [{ 
     "name": "#VALUE", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }, { 
     "name": "@ref", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }], 
    "values": [null, 34817060] 
}, { 
    "schema": [{ 
     "name": "#VALUE", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }, { 
     "name": "@ref", 
     "dataType": {}, 
     "nullable": true, 
     "metadata": { 
      "map": {} 
     } 
    }], 
    "values": [null, 291594905] 
}] 

das Ergebnis

["442256","4192463331","34817060","291594905"] 

dieser Teil meines Codes aber nicht

Stream.of(mapper.readValue(mapper.writeValueAsString(data),ArrayList.class)) 
      .filter(c -> c instanceof ArrayList<?>) 
      .map(ArrayList.class::cast) 
      .map(c -> 
        c.forEach(f -> { Stream.of(mapper.readValue(mapper.writeValueAsString(f),HashMap.class)) 
            .filter(f -> f instanceof HashMap<?,?>) 
            .map(HashMap.class::cast) 
            ... 
           } 
          ) 
       ) 
      .forEach(System.out::println); 

eine Idee zu arbeiten?

herzlich

+1

Sie haben keinen [MCVE] liefern (http://www.stackoverflow.com) –

+0

Bitte senden Sie eine ganze lauffähiger Code –

+0

Erstellen Sie zuerst eine 'List >>' – 4castle

Antwort

1

Der Code in Ihrer Frage ziemlich verwirrend, aber wenn ich die Frage nehmen sich buchstäblich Sie fragen: „gegeben ein List<Map<String, String>> wie bekomme ich einen List<String> alle Werte in den Karten für einen bestimmten Schlüssel darstellt? " Wenn das wirklich Ihre Frage trotz nicht gefunden, die Ihren Code ist, dann ist hier eine Antwort:

List<Map<String, String>> listOfMaps; 
List<String> valuesMatchingKey = listOfMaps.stream() 
    .filter(map -> map.containsKey("Key")) 
    .map(map -> map.get("Key")) 
    .collect(Collectors.toList()); 
+0

Liste >> listOfMaps = mapper.readValue (mapper.writeValueAsString (Daten), ArrayList.class); \t \t \t \t Liste valuesMatchingKey = listOfMaps.stream() \t \t .filter (Karte -> map.containsKey ("Werte")) \t \t .map (Karte -> String.valueOf ( \t \t \t \t \t \t map.get ("Werte"). erhalten (1) \t \t \t \t \t) \t \t) \t \t .collect (Collectors.toList()); danke es funktioniert für mich – fadaytak

Verwandte Themen