首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java8 Filter 通过集合contains可以批量过滤

Java8 Filter 通过集合contains可以批量过滤

作者头像
oktokeep
发布2025-02-13 10:03:45
发布2025-02-13 10:03:45
14400
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

Java8 Filter 通过集合contains可以批量过滤

代码语言:javascript
代码运行次数:0
运行
复制
package com.example.core.mydemo.javatest;

import java.util.ArrayList;
import java.util.List;

/**
 * output:
 * ownerCostAmt=100
 * ownerCostAmt2=600
 * ownerCostAmt3=600
 * ownerCostAmt4=600
 *
 */
public class FilterTest {
    public static void main(String[] args) {
        List<OrderCostDetailDTO> list = new ArrayList<OrderCostDetailDTO>();
        OrderCostDetailDTO dto = new OrderCostDetailDTO();
        dto.setCostCode("111000");
        dto.setTotalAmount(100);
        list.add(dto);

        dto = new OrderCostDetailDTO();
        dto.setCostCode("211000");
        dto.setTotalAmount(200);
        list.add(dto);

        dto = new OrderCostDetailDTO();
        dto.setCostCode("311000");
        dto.setTotalAmount(300);
        list.add(dto);

        //1.仅仅过滤的是一个编码
        int ownerCostAmt = list.stream()
                .filter(obj -> ("111000".equals(obj.getCostCode())))
                .mapToInt(OrderCostDetailDTO::getTotalAmount).sum();

        System.out.println("ownerCostAmt=" + ownerCostAmt);

        //2.通过 || 或的关系,过滤3个编码
        ownerCostAmt = list.stream()
                .filter(obj -> ( "111000".equals(obj.getCostCode())
                || "211000".equals(obj.getCostCode())  || "311000".equals(obj.getCostCode())))
                .mapToInt(OrderCostDetailDTO::getTotalAmount).sum();

        System.out.println("ownerCostAmt2=" + ownerCostAmt);

        //3. 通过集合列表 过滤 3个编码
        List<String> costCode = new ArrayList<String>();
        costCode.add("111000");
        costCode.add("211000");
        costCode.add("311000");

        ownerCostAmt = list.stream()
                .filter(obj -> (costCode.contains(obj.getCostCode())))
                .mapToInt(OrderCostDetailDTO::getTotalAmount).sum();

        System.out.println("ownerCostAmt3=" + ownerCostAmt);

        //4. 通过for循环过滤 3个编码
        ownerCostAmt = 0;
        for (OrderCostDetailDTO ownerOrderPurchaseDetailDTO : list) {
            if(costCode.contains(ownerOrderPurchaseDetailDTO.getCostCode())){
                ownerCostAmt += ownerOrderPurchaseDetailDTO.getTotalAmount();
            }
        }
        System.out.println("ownerCostAmt4=" + ownerCostAmt);
    }
}
代码语言:javascript
代码运行次数:0
运行
复制
package com.example.core.mydemo.javatest;

import java.io.Serializable;


public class OrderCostDetailDTO implements Serializable {

        private String costCode;

        private Integer totalAmount;


    public String getCostCode() {
        return costCode;
    }

    public void setCostCode(String costCode) {
        this.costCode = costCode;
    }

    public Integer getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(Integer totalAmount) {
        this.totalAmount = totalAmount;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档