首页 > 基础资料 博客日记
Java stream 分组操作
2023-07-24 16:47:33基础资料围观242次
本篇文章分享Java stream 分组操作,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
根据单/多字段分组
单字段分组可以直接使用指定字段,多字段分组则采用拼接Key的形式
单字段:
//单字段分组
Map<String, List<User>> singleAttr = list.stream().collect(
Collectors.groupingBy(t -> t.getNativePlace()));
//还可以写成简化版
//Map<String, List<User>> collect = list.stream().collect(
// Collectors.groupingBy(User::getNativePlace));
多字段:
//多字段分组
Map<String, List<User>> multiAttr = list.stream().collect(
Collectors.groupingBy(t -> t.getNativePlace()+"_"+t.getAge()));
多层级:
//多级分组
Map<String, Map<Integer, List<User>>> multiLevel = list.stream().collect(
Collectors.groupingBy(
t -> t.getNativePlace(),
Collectors.groupingBy(t -> t.getAge())
)
);
测试
package test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
ArrayList<User> list=new ArrayList<User>();
list.add(new User(11,"a"));
list.add(new User(12,"a"));
list.add(new User(14,"c"));
list.add(new User(14,"c"));
//单字段分组
Map<String, List<User>> singleAttr = list.stream().collect(Collectors.groupingBy(t -> t.getNativePlace()));
//还可以写成简化版
//Map<String, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getNativePlace));
//多字段分组
Map<String, List<User>> multiAttr = list.stream().collect(Collectors.groupingBy(t -> t.getNativePlace()+"_"+t.getAge()));
//多级分组
Map<String, Map<Integer, List<User>>> multiLevel = list.stream().collect(
Collectors.groupingBy(
t -> t.getNativePlace(),
Collectors.groupingBy(t -> t.getAge())
)
);
}
}
class User{
private int age;
private String nativePlace;
public String getNativePlace() {
return nativePlace;
}
public void setNativePlace(String nativePlace) {
this.nativePlace = nativePlace;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(int age,String nativePlace) {
this.age = age;
this.nativePlace=nativePlace;
}
}
文章来源:https://blog.csdn.net/zcy_wxy/article/details/130192370
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: