【java stream 使用案例】根据某个字段进行分组

java 复制代码
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class demo2 {

    public static void main(String[] args) {
        List<OrderEntity> list = getListData();
        // 根据类型进行分组
        Map<String, List<OrderEntity>> collect = list.stream().collect(Collectors.groupingBy(OrderEntity::getType));
        // 取得类型为02的数据
        List<OrderEntity> list02 = collect.get("02");
        System.out.println(list02.toString());
    }

    public static List<OrderEntity> getListData() {
        List<OrderEntity> list = new ArrayList<>();
        OrderEntity o1 = new OrderEntity("1", "商品1", "189.99", "2025-01-01", "18:20:18", "01");
        list.add(o1);
        OrderEntity o2 = new OrderEntity("2", "商品2", "289.98", "2025-02-01", "14:28:40", "02");
        list.add(o2);
        OrderEntity o3 = new OrderEntity("3", "商品3", "589.99", "2024-08-01", "11:20:24", "02");
        list.add(o3);
        OrderEntity o4 = new OrderEntity("4", "商品4", "389.98", "2024-11-21", "18:28:55", "01");
        list.add(o4);
        OrderEntity o5 = new OrderEntity("5", "商品5", "859.99", "2024-09-11", "05:20:42", "01");
        list.add(o5);
        OrderEntity o6 = new OrderEntity("6", "商品6", "889.98", "2024-12-24", "16:18:52", "01");
        list.add(o6);
        OrderEntity o7 = new OrderEntity("7", "商品7", "198.99", "2025-02-09", "19:15:35", "02");
        list.add(o7);
        OrderEntity o8 = new OrderEntity("8", "商品8", "129.98", "2024-01-18", "12:25:56", "01");
        list.add(o8);
        return list;
    }

}
java 复制代码
import java.math.BigDecimal;

public class OrderEntity {
    /**
     * id
     */
    private String id;
    /**
     * 名称
     */
    private String name;
    /**
     * 价格
     */
    private BigDecimal price;
    /**
     * 购买日期
     */
    private String buyDate;
    /**
     * 购买时间
     */
    private String buyTime;
    /**
     * 商品类型
     */
    private String type;

    public OrderEntity() {}

    public OrderEntity(String id, String name, String price, String buyDate, String buyTime, String type) {
        this.id = id;
        this.name = name;
        this.price = new BigDecimal(price);
        this.buyDate = buyDate;
        this.buyTime = buyTime;
        this.type = type;
    }

    public String getId() {
        return this.id;
    }

    public void setId(final String id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(final String name) {
        this.name = name;
    }

    public BigDecimal getPrice() {
        return this.price;
    }

    public void setPrice(final BigDecimal price) {
        this.price = price;
    }

    public String getBuyDate() {
        return this.buyDate;
    }

    public void setBuyDate(final String buyDate) {
        this.buyDate = buyDate;
    }

    public String getBuyTime() {
        return this.buyTime;
    }

    public void setBuyTime(final String buyTime) {
        this.buyTime = buyTime;
    }

    public String getType() {
        return this.type;
    }

    public void setType(final String type) {
        this.type = type;
    }

    @Override
    public String toString() {
        return "OrderEntity{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", buyDate='" + buyDate + '\'' +
                ", buyTime='" + buyTime + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
}
相关推荐
JH30736 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_7 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble8 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟8 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖8 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707539 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_10 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.10 小时前
Day06——权限认证-项目集成
java
瑶山10 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy10 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法