Joh*_*ohn 0 java grouping java-stream collectors
我需要转换List
的POJO
,以Map<Integer, List<MyClass>>
其中的关键是要从价值MyClass
也就是下面的代码如下所示:
public class MyClass {
public int id; // this field value must be key of map.
public String name;
}
public static void main(String... args) {
List<MyClass> lst = new ArrayList();
lst.add(new MyClass(1, "John"));
lst.add(new MyClass(1, "Peter"));
lst.add(new MyClass(2, "Sarah"));
Map<Integer, List<MyClass>> res = lst.collect(..);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?你能帮助我吗?
您可以使用groupingBy
:
Map<Integer, List<MyClass>> res = lst.stream()
.collect(Collectors.groupingBy(MyClass::getId));
Run Code Online (Sandbox Code Playgroud)
除了:在现有代码中进行较小的更正,请避免使用未经检查的分配:
List<MyClass> lst = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35 次 |
最近记录: |