2017-06-16 3 views
2

Jetzt möchte ich eine Liste in eine Karte, z.Wie könnte die Liste in Karte umwandeln <K,V>, aber nicht Liste <V>

TaskStat t1 = new TaskStat("foo1", "bar1", 1); 
    TaskStat t2 = new TaskStat("foo1", "bar2", 2); 
    ArrayList<TaskStat> list = newArrayList(t1, t2); 

    Map<String, List<TaskStat>> map = list.stream().collect(groupingBy(e -> e.getA() + "_" + e.getB())); 

    assertEquals(1,map.get("foo1_bar1").get(0).getCount()); 

weil die taskStat Liste stammt aus group by SQL

select a, b , count(*) from t group by a,b 

So hat jedes a + b nur einen Datensatz.

Wie könnte die Liste in Map<String,TaskStat> umwandeln, aber nicht List?

Antwort

4

Verwenden Collectors.toMap statt Collectors.groupingBy

Map<String, TaskStat> result = 
    list.stream().collect(Collectors.toMap(ts -> ts.getA() + "_" + ts.getB(), 
            Function.identity())); 
Verwandte Themen