Ann*_*Ann 8 java java-8 java-stream
我想将 Student 对象列表转换为Map<Long, List<>>using streams.
List<Student> list = new ArrayList<Student>();
list.add(new Student("1", "test 1"));
list.add(new Student("3", "test 1"));
list.add(new Student("3", "test 3"));
Run Code Online (Sandbox Code Playgroud)
我希望最终结果如下:
地图
关键:1
值列表: Student("1", "test 1")
钥匙:3
值列表: Student("3", "test 1"), Student("3", "test 3")
我尝试了以下代码,但它正在重新初始化Student对象。谁能帮我修复下面的代码?
List<Student> list = new ArrayList<Student>();
list.add(new Student("1", "test 1"));
list.add(new Student("3", "test 1"));
list.add(new Student("3", "test 3"));
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 13
您不需要链接mapping收集器。默认情况下,单个参数groupingBy将为您提供一个Map<Long, List<Student>>。
Map<Long, List<Student>> map =
list.stream()
.collect(Collectors.groupingBy(Student::getId));
Run Code Online (Sandbox Code Playgroud)
Eran的回答是准确的。只是为了补充一点,您还可以使用Supplier例如
Map<Long, List<Student>> map =
list.stream()
.collect(Collectors.groupingBy(Student::getId, TreeMap::new, Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |