首页 > 基础资料 博客日记

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进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云