java8 多条件的filter过滤
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过滤的更多相关文章
- Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...
- stark组件之delete按钮、filter过滤
1.构建批量删除按钮 2.filter过滤 3.总结+coding代码 1.构建批量删除按钮 1.admin中每个页面默认都有 2.stark之构建批量删除 3.coding {% extends ' ...
- django 模型类的常见字段约束,以及filter 过滤和查询
null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...
- Java Filter过滤xss注入非法参数的方法
http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...
- js--数组的filter()过滤方法的使用
前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...
- Android利用Filter过滤数据
MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; imp ...
- filter过滤action的问题
今天犯了一个错误,结果白白浪费了半个下午的时间,特记于此. filter过滤Action的时候,要把过滤器配置在Struts2拦截器的前面,这样过滤器才能过滤到Action,否则不可以.
- 【原创】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 ...
- angular 如何获取使用filter过滤后的ng-repeat的数据长度
在做项目的过程中,被产品要求在内容为空的过程中显示提示信息,然哦户内容使用ng-repeat循环输出的,并且使用了filter过滤.后在谷歌上找到解决方案,如下: 之前代码如下显示: <ul& ...
- Java Servlet (1) —— Filter过滤请求与响应
Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...
随机推荐
- Java编程技巧之样板代码
简介: 在日常编码的过程中,可以总结出很多"样板代码",就像"活字印刷术中的"活字"一样.当我们编写新的代码时,需要用到这些"活字" ...
- DevOps发布策略简介
简介: DevOps追求更短的迭代周期.更高频的发布.但发布的次数越多,引入故障的可能性就越大.更多的故障将会降低服务的可用性,进而影响到客户体验.所以,为了保证服务质量,守好发布这个最后一道关,阿里 ...
- RedShift到MaxCompute迁移实践指导
简介: 本文主要介绍Amazon Redshift如何迁移到MaxCompute,主要从语法对比和数据迁移两方面介绍,由于Amazon Redshift和MaxCompute存在语法差异,这篇文章讲解 ...
- LlamaIndex 起步教程(本地模型)
提示:确保您已先按照自定义安装步骤操作. 这是一个著名的"五行代码"起步示例,使用本地 LLM(大语言模型)和嵌入模型.我们将使用 BAAI/bge-small-en-v1.5 作 ...
- WPF dotnet 6 开启 PM v2 的 DPI 感知 导致触摸线程访问 UI 属性抛异常
本文记录一个 WPF 在 dotnet 6 的一个已知问题,且此问题我已修复提交给官方仓库.这是一个只有在 dotnet 6 框架下,非 dotnet 5 也非 .NET Core 3.1 也非 .N ...
- 2019-8-31-C#-获取进程退出代码
title author date CreateTime categories C# 获取进程退出代码 lindexi 2019-08-31 16:55:58 +0800 2019-02-13 09: ...
- containerd基本使用命令
一.containerd简介 官 方 文 档 : https://containerd.io 在 2016 年 12 月 14 日,Docker 公司宣布将containerd 从 Docker 中分 ...
- 前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法
目录 1. 引言 2. 跨源资源共享和实现方法 3. 在Django项目中配置django-cors-headers库 Reference 1. 引言 在进行后端API开发时,有时会遇到"跨 ...
- 在python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
所以最终的 解决办法:pip install keras -i http://pypi.douban.com/simple --trusted-host pypi.douban.com(其中的kera ...
- Scala中集合中的View用法
设想以下这个计算 def eval(i: Int): Option[Int] = { println(s"invoke with $i") if (i % 2 == 0) { No ...