【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 + '\'' +
                '}';
    }
}
相关推荐
爱笑的源码基地7 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
莫逸风10 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898610 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112311 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员11 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus
小钻风336612 小时前
Spring Boot 文件上传详解:深入理解 MultipartFile 的使用与原理
java·开发语言
其美杰布-富贵-李12 小时前
Spring Boot 工程开发全流程说明
java·spring boot·后端
前端双越老师14 小时前
如何以前端视角(非0基础)学 Java ?
java·node.js·全栈
dear_bi_MyOnly14 小时前
【SpringBoot配置文件】
java·spring boot·后端·学习·spring·java-ee·学习方法
做个文艺程序员14 小时前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器