java8 多条件的filter过滤

package com.example.core.mydemo.java;

import java.io.Serializable;
import java.time.LocalDateTime; public class CostSettleDetailEntity implements Serializable {
private static final long serialVersionUID = 1L; /**
* id
*/
private Integer id;
/**
* 主订单号
*/
private String orderNo;
/**
* 会员号
*/
private String memNo;
/**
* 金额
*/
private Integer amt;
/**
* 费用编码
*/
private String sourceCode;
/**
* 费用来源描述
*/
private String sourceDetail;
/**
* 费用唯一凭证
*/
private String uniqueNo;
/**
* 费用类型
*/
private Integer costType;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建人
*/
private String createOp;
/**
* 修改时间
*/
private LocalDateTime updateTime;
/**
*
*/
private String updateOp;
/**
* 0-正常,1-已逻辑删除
*/
private Integer isDelete; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getOrderNo() {
return orderNo;
} public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
} public String getMemNo() {
return memNo;
} public void setMemNo(String memNo) {
this.memNo = memNo;
} public Integer getAmt() {
return amt;
} public void setAmt(Integer amt) {
this.amt = amt;
} public String getSourceCode() {
return sourceCode;
} public void setSourceCode(String sourceCode) {
this.sourceCode = sourceCode;
} public String getSourceDetail() {
return sourceDetail;
} public void setSourceDetail(String sourceDetail) {
this.sourceDetail = sourceDetail;
} public String getUniqueNo() {
return uniqueNo;
} public void setUniqueNo(String uniqueNo) {
this.uniqueNo = uniqueNo;
} public Integer getCostType() {
return costType;
} public void setCostType(Integer costType) {
this.costType = costType;
} public LocalDateTime getCreateTime() {
return createTime;
} public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
} public String getCreateOp() {
return createOp;
} public void setCreateOp(String createOp) {
this.createOp = createOp;
} public LocalDateTime getUpdateTime() {
return updateTime;
} public void setUpdateTime(LocalDateTime updateTime) {
this.updateTime = updateTime;
} public String getUpdateOp() {
return updateOp;
} public void setUpdateOp(String updateOp) {
this.updateOp = updateOp;
} public Integer getIsDelete() {
return isDelete;
} public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
} package com.example.core.mydemo.java; import java.util.ArrayList;
import java.util.List; /**
* filter过滤查询costType = 5 或者 costType=50的费用综合
* output: fineAmt-1 = 399
* fineAmt-2 = 0
* fineAmt-3 = 199
*/
public class CostSettleFilterTest {
public static void main(String[] args) {
List<CostSettleDetailEntity> costSettleDetails = new ArrayList<CostSettleDetailEntity>();
CostSettleDetailEntity entity = new CostSettleDetailEntity();
entity.setOrderNo("3418639");
entity.setMemNo("635206016");
entity.setAmt(99);
entity.setSourceCode("4");
entity.setSourceDetail("取消订单违约金");
entity.setCostType(5);
costSettleDetails.add(entity); entity = new CostSettleDetailEntity();
entity.setOrderNo("444186390");
entity.setMemNo("635206016");
entity.setAmt(100);
entity.setSourceCode("5");
entity.setSourceDetail("取消订单违约金");
entity.setCostType(50);
costSettleDetails.add(entity); entity = new CostSettleDetailEntity();
entity.setOrderNo("5699556");
entity.setMemNo("635206016");
entity.setAmt(200);
entity.setSourceCode("6");
entity.setSourceDetail("取消订单违约金");
entity.setCostType(6);
costSettleDetails.add(entity); //求和
int fineAmt11 =costSettleDetails.stream().mapToInt(CostSettleDetailEntity::getAmt).sum();
System.out.println("fineAmt-1 = " + fineAmt11); //这样写不对,等于是双重过滤了。筛选不了结果
int fineAmt22 =costSettleDetails.stream().filter(obj ->{
return obj.getCostType() != null && 5 == obj.getCostType(); // 5
}).filter(obj ->{
return obj.getCostType() != null && 50 == obj.getCostType(); // 50
}).mapToInt(CostSettleDetailEntity::getAmt).sum();
System.out.println("fineAmt-2 = " + fineAmt22); //正确写法,在filter条件里面写 || 或的条件。
int fineAmt33 =costSettleDetails.stream().filter(obj ->{
return obj.getCostType() != null && ( 5 == obj.getCostType() || 50 == obj.getCostType()); // 5 50
}).mapToInt(CostSettleDetailEntity::getAmt).sum();
System.out.println("fineAmt-3 = " + fineAmt33); }
}

java8 多条件的filter过滤的更多相关文章

  1. Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...

  2. stark组件之delete按钮、filter过滤

    1.构建批量删除按钮 2.filter过滤 3.总结+coding代码 1.构建批量删除按钮 1.admin中每个页面默认都有 2.stark之构建批量删除 3.coding {% extends ' ...

  3. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

  4. Java Filter过滤xss注入非法参数的方法

    http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...

  5. js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  6. Android利用Filter过滤数据

    MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; imp ...

  7. filter过滤action的问题

    今天犯了一个错误,结果白白浪费了半个下午的时间,特记于此. filter过滤Action的时候,要把过滤器配置在Struts2拦截器的前面,这样过滤器才能过滤到Action,否则不可以.

  8. 【原创】Easyui tree filter 过滤本地数据无效的原因

    Easyui tree filter 过滤本地数据无效的解决方式    正确使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  9. angular 如何获取使用filter过滤后的ng-repeat的数据长度

    在做项目的过程中,被产品要求在内容为空的过程中显示提示信息,然哦户内容使用ng-repeat循环输出的,并且使用了filter过滤.后在谷歌上找到解决方案,如下: ​之前代码如下显示: <ul& ...

  10. Java Servlet (1) —— Filter过滤请求与响应

    Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...

随机推荐

  1. k3s入门与实战---适配边缘计算场景的轻量级的k8s(一)

    一.k3s介绍 1.1 什么是k3s? k3s 是经过 CNCF 认证的由 Rancher 公司开发维护的一个轻量级的 Kubernetes 发行版,内核机制还是和 k8s 一样,但是剔除了很多外部依 ...

  2. Spring如何控制Bean的加载顺序

    前言 正常情况下,Spring 容器加载 Bean 的顺序是不确定的,那么我们如果需要按顺序加载 Bean 时应如何操作?本文将详细讲述我们如何才能控制 Bean 的加载顺序. 场景 我创建了 4 个 ...

  3. 如何在Ubuntu 16.04上安装和保护MongoDB

    第1步 - 添加MongoDB存储库 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14 ...

  4. 前端JavaScript开发风格规范

    开发者需要建立和遵守的规范 大致可以划分成这几个方向: 开发流程规范 代码规范 git commit规范 项目文件结构规范 UI设计规范 1. 开发流程规范 这里可能有小伙伴有疑问了,开发流程规范不是 ...

  5. SQLServer统计监控SQL执行计划突变的方法

    使用动态管理视图(DMVs)来检测SQL执行计划的突变,你需要关注那些能够提供查询执行统计和计划信息的视图.以下是一些可以用于此目的的DMVs以及相应的查询示例: sys.dm_exec_query_ ...

  6. C#TMS系统学习(BaseCity页面)

    C#TMS系统代码-基础页面BaseCity学习 本人纯新手,刚进公司跟领导报道,我说我是java全栈,他问我会不会C#,我说大学学过,他说这个TMS系统就给你来管了.外包已经把代码给我了,这几天先把 ...

  7. 网络拓扑—WEB-IIS服务搭建

    目录 WEB-IIS服务搭建 网络拓扑 配置网络 IIS PC 安装IIS服务 配置IIS服务(默认站点) PC机访问网页 配置IIS服务(新建站点) PC机访问网页 WEB-IIS服务搭建 网络拓扑 ...

  8. Gitee千Star优质项目解析: ng-form-element低开引擎解析

    好家伙, 在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了 gitee项目地址 https://gitee.com/jjxliu306 ...

  9. openstack的用户(user), 租户(tenant), 角色(role)概念区分

    用户身份管理有三个主要的概念: 用户Users租户Tenants角色Roles1. 定义 这三个概念的openstack官网定义(点击打开链接) 1.1 用户(User) openstack官网定义U ...

  10. kubernetes 之网络(canal)

    https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ 所有节点重设 ...