问题描述
问题:需要根据对象的某个属性实现分组。
[Person(code=1, name=zhangsan, age=10), Person(code=2, name=lisi, age=20), Person(code=1, name=wangwu, age=20)]
{1=[Person(code=1, name=zhangsan, age=10), Person(code=1, name=wangwu, age=20)], 2=[Person(code=2, name=lisi, age=20)]}
实现思路
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.*;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
Person p1 = new Person(1,"zhangsan",10);
Person p2 = new Person(2,"lisi",20);
Person p3 = new Person(1,"wangwu",20);
List<Person> persons = new ArrayList<>();
persons.add(p1);
persons.add(p2);
persons.add(p3);
System.out.println(persons);
Map<Integer, List<Person>> map = persons.stream().collect(Collectors.groupingBy(Person::getCode));
System.out.println(map);
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
private int code;
private String name;
private int age;
}