实现功能
- Java8中stream Collectors.groupingBy将List转为分组Map
User类
package com.github.mouday.reggie; public class User { private Integer id; private String name; private Integer age; public User(Integer id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
示例
package com.github.mouday.reggie; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Demo { public static void main(String[] args) { List<User> users = Arrays.asList( new User(1, "Tom", 20), new User(2, "Jack", 30), new User(3, "Steve", 20) ); // 按照年龄分组 Map<Integer, List<User>> map = users.stream().collect(Collectors.groupingBy(User::getAge)); System.out.println(map); // { // 20=[ // User{id=1, name='Tom', age=20}, // User{id=3, name='Steve', age=20} // ], // 30=[ // User{id=2, name='Jack', age=30} // ] // } } }