实现功能

  • 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}
// ]
// }
}
}