2017-06-16 14 views
2

今、リストをマップに変換したいと思います。リストをマップに変換する方法<K,V>リストはありません。<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()); 

taskStatリストがgroup by SQL

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

から来ているので、だから、すべてのA + Bは、1つのレコードのみを持っています。

リストをMap<String,TaskStat>に変換できますが、リストは変換できませんでしたか?

答えて

4

代わりCollectors.groupingBy

Map<String, TaskStat> result = 
    list.stream().collect(Collectors.toMap(ts -> ts.getA() + "_" + ts.getB(), 
            Function.identity())); 
の使用 Collectors.toMap
関連する問題