首页 > 基础资料 博客日记
Java stream 分组操作
2023-07-24 16:47:33基础资料围观499次
本篇文章分享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进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- SpringBoot--如何整体读取多个配置属性及其相关操作
- 个人网站一键引入免费开关评论功能 giscus
- Java开发笔记(一百五十五)生成随机数的几种途径
- 榨干 Claude Code 的 16 个实用小技巧(高端玩法,建议收藏!)
- NBA巨星詹姆斯表变老嫂子了?这锅Viggle Ai得背/Ai视频创作/Ai魔性视频创作/Ai优质视频创作
- Java简历、面试、试用期、转正
- 使用Apollo配置中心,**静态字段通过`@Value`的setter方法可以实现热更新**
- vivo Pulsar 万亿级消息处理实践(3)-KoP指标异常修复
- MybatisPlus使用详情
- G1收集器:JVM垃圾回收的新一代王者