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

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

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);
    }
}
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;
    }
}

 

posted on 2025-02-12 18:43  oktokeep  阅读(46)  评论(0)    收藏  举报