1、list集合数据分组
代码示例:
(1)数据分组
// 创建list对象
List<String> listStr = new ArrayList<>();
listStr.add("aa");
listStr.add("bb");
listStr.add("bb");
listStr.add("aa");
// 分组
Map<String, List<String>> newData = listStr.stream().collect(Collectors.groupingBy(data -> data));
System.out.printnl(newData);
// 打印的数据结果为:
{bb=[bb, bb], aa=[aa, aa]}
(2)对象分组
// 创建对象
@Data
class Obj{
int id;
String firstName;
String fullName;
int age;
public Obj(int id, String firstName, String fullName, int age){
this.id = id;
this.firstName = firstName;
this.fullName = fullName;
this.age = age;
}
}
// 创建list对象
List<Obj> listData = new ArrayList<>();
listData.add(new Obj(1, "李", "李四", 20));
listData.add(new Obj(2, "林", "林笑", 23));
listData.add(new Obj(3, "李", "李慕", 25));
listData.add(new Obj(4, "张", "张三", 21));
listData.add(new Obj(5, "林", "林云", 24));
// 分组
Map<String, List<Obj>> collect = listData.stream().collect(Collectors.groupingBy(data -> data.firstName));
System.out.println(collect);