实现功能
- 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}
// ]
// }
}
}