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