stream().filter匹配过滤总结
文章目录
- 前言
- 一、简单匹配过滤
- 二、对象匹配过滤
- 三、自定义匹配过滤
前言
Java集合Stream 出自 Java8。
可谓是加量不加价,丰富了使用场景,还精简了代码。虽然牺牲了一点可读性,但总体来说是很好用的。以下总结其中 filter 的一些用法,整理相关的例子。
以下是几种场景
一、简单匹配过滤
简单对象
public class TestFilter {public static void main(String[] args) {List<String> list = Arrays.asList("AAB","BBB","ACC");System.out.println("过滤相等-------------------------------------------");List<String> result1 = list.stream().filter(v -> v.equals("AAB")).collect(Collectors.toList());result1.forEach(v-> System.out.println(v));System.out.println("过滤 模糊相等(包含)-------------------------------------------");List<String> result2 = list.stream().filter(v -> v.contains("B")).collect(Collectors.toList());result2.forEach(v-> System.out.println(v));System.out.println("多条件 过滤 与:&&; 或||-------------------------------------------");List<String> result3 = list.stream().filter(v -> v.contains("A") && v.contains("C")).collect(Collectors.toList());result3.forEach(v-> System.out.println(v));}
}
运行结果
可见,filter支持单条件,多条件组合匹配过滤
二、对象匹配过滤
假设对象
public class User {/** 名称 */private String name;/** 年龄 */private Integer age;
}
例子
public class TestFilter1 {public static void main(String[] args) {List<User> userList = new ArrayList<>();userList.add(new User("小明", 18));userList.add(new User("王姐", 21));System.out.println("过滤相等-------------------------------------------");List<User> result1 = userList.stream().filter(v -> v.getName().equals("小明")).collect(Collectors.toList());result1.forEach(v-> System.out.println(v));}
}
运行结果
三、自定义匹配过滤
看看filter接口的源码
public interface Stream<T> extends BaseStream<T, Stream<T>> {/*** Returns a stream consisting of the elements of this stream that match* the given predicate.** <p>This is an <a href="package-summary.html#StreamOps">intermediate* operation</a>.** @param predicate a <a href="package-summary.html#NonInterference">non-interfering</a>,* <a href="package-summary.html#Statelessness">stateless</a>* predicate to apply to each element to determine if it* should be included* @return the new stream*/Stream<T> filter(Predicate<? super T> predicate);
可以看到,filter接收的参数是Predicate,这是一个布尔接口,用于各种匹配,所以自定义filter实际上我们是你把Predicate的用法丰富起来
比如:
public class TestFilter1 {public static void main(String[] args) {List<User> userList = new ArrayList<>();userList.add(new User("小明", 18));userList.add(new User("王姐", 21));System.out.println("过滤相等-------------------------------------------");List<User> result2 = userList.stream().filter(new Predicate<User>() {@Overridepublic boolean test(User user) {if (user.getAge() > 18) {return true;}else{return false;}}}).collect(Collectors.toList());result2.forEach(v-> System.out.println(v));}
}
运行结果
stream().filter匹配过滤总结相关推荐
- stream filter 用法_JDK1.8新特性Stream和Collectors19个常用示例总结
关于Stream和Collectors的用法,这应该是总结的最全的文章了,大家可以收藏一下. 一:简介 java.util.Stream 表示能应用在一组元素上一次执行的操作序列.Stream 操作分 ...
- JDK8特性--Stream(求和,过滤,排序)
Stream简介 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Jav ...
- fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)转自:http://blog.csdn.net/notejs/article/
fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...
- java stream filter map collector使用
@Testpublic void demo1(){ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i & ...
- lambda的peek(流元素操作),filter(过滤),map(映射),limit(截断),skip(跳过),collect,distinct(去重)函数使用
原博地址 @RequestMapping(value = "/list.json", method = GET) public void list(ModelMap modelMa ...
- Elasticearch Filter Query 过滤查询--(五)
Elasticearch Filter Query 过滤查询 1,过滤查询 ES查询操作分为2种:查询(query)和 过滤(filter). 1. Query,默认计算每个返回文档的得分,然后根据得 ...
- list.stream.filter常用方式
在Java8中对集合的操作可以这样操作1.查找集合中的第一个对象Optional<Object> first= ObjectList.stream() .filter(a -> &q ...
- Java Stream(求和,过滤,排序)
前言 利用Java8 新特性 Stream进行求和.过滤.排序. 提示:以下是本篇文章正文内容,下面案例可供参考 1.创建实体类 代码如下(示例): @Data public class Employ ...
- wireshare capture filter捕捉过滤的设置
我们在使用wireshark去抓取协议log的时候,经常碰到抓到的log过大,而很难打开的想象.特别是对于测试时间久的case, log size几个G,甚至十几,几十个G的情况,对于这种情况,有两种 ...
最新文章
- 西安翻译学院计算机分数线,西安翻译学院录取投档线
- WCF Data Service安全分析和说明
- es6对象属性的遍历
- Dos中重定向与文件追加
- 可口的JAVA-并发控制之CountDownLatch
- 【BZOJ3611】【HeOI2014】—大工程(虚树+dp)
- springMVC_数据的处理过程
- 三种方式使得iOS应用能够在后台进行数据更新和下载
- flex布局,属性用法
- mac操作系统如何访问共享计算机,Mac系统访问Windows共享文件的详细步骤
- PHP 中 this,self,parent 的区别、用法
- oracle 故障 linux,從硬盤安裝Oracle Linux 6.3之軟驅故障
- Rust :fold
- IIS7安装URLReWrite的妙用
- 新品上市|A股场内衍生品大盘点
- 如何通过github实现个人网页上传
- 凯文·凯利:AI将改变一切设计工作
- 脱掉“爱加密”家的壳
- 吐血整理APP被苹果APPStore拒绝的各种原因
- ps2019安装破解