当前位置: 首页 > news >正文

java中处理stream.filter()

在Java中,stream.filter方法用于对流中的元素进行筛选。filter方法接受一个Predicate(一个返回布尔值的函数),然后返回一个包含所有匹配元素的新流。

使用场景

假设有一个包含多个元素的集合,需要对其中的元素进行筛选,只保留满足特定条件的元素。

示例代码

以下是一些使用stream.filter方法的示例:

1. 过滤列表中的偶数
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class FilterExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());System.out.println(evenNumbers); // 输出: [2, 4, 6, 8, 10]}
}
2. 过滤包含特定字符串的字符串列表
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class FilterExample {public static void main(String[] args) {List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "fig", "grape");List<String> filteredWords = words.stream().filter(word -> word.contains("a")).collect(Collectors.toList());System.out.println(filteredWords); // 输出: [apple, banana, grape]}
}
3. 过滤对象列表

假设有一个Person类,并希望过滤出年龄大于18岁的人。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public int getAge() {return age;}public String getName() {return name;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class FilterExample {public static void main(String[] args) {List<Person> people = Arrays.asList(new Person("John", 20),new Person("Jane", 17),new Person("Tom", 25),new Person("Lucy", 15));List<Person> adults = people.stream().filter(person -> person.getAge() > 18).collect(Collectors.toList());adults.forEach(System.out::println);// 输出:// Person{name='John', age=20}// Person{name='Tom', age=25}}
}

说明

  • stream():将集合转换为流。
  • filter(Predicate):过滤流中的元素,保留满足条件的元素。
  • collect(Collectors.toList()):将流转换回列表。

使用Predicate接口

Predicate是一个函数式接口,定义了一个test方法,用于对给定的输入进行评估。

可以创建自定义的Predicate,如下所示:

import java.util.function.Predicate;public class CustomPredicateExample {public static void main(String[] args) {Predicate<Integer> isEven = n -> n % 2 == 0;Predicate<Integer> isPositive = n -> n > 0;boolean result1 = isEven.test(4); // trueboolean result2 = isPositive.test(-1); // falseSystem.out.println(result1); // 输出: trueSystem.out.println(result2); // 输出: false}
}

总结

stream.filter是Java Stream API中的一个强大工具,可以简洁地对集合进行筛选操作。通过结合使用Lambda表达式和Predicate接口,可以方便地创建各种筛选条件。

下一步建议:
a. 使用其他Stream操作(如mapreduce)与filter结合进行复杂的数据处理。
b. 实现自定义Predicate来筛选更复杂的条件。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • myBatis的基本操作(持续更新中。。。)
  • Windows配置Qt+VLC
  • 使用 node --inspect 命令调试js文件执行
  • 【LeetCode】day18:530 - 二叉搜索树的最小绝对差, 501 - 二叉搜索树中的众数, 236 - 二叉树的最近公共祖先
  • python爬虫Selenium模块及测试案例详解
  • 大语言模型-Transformer-Attention Is All You Need
  • 如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等
  • 学生管理系统(C语言)(Easy-x)
  • [python]pycharm设置清华源
  • WEB前端09-前端服务器搭建(Node.js/nvm/npm)
  • 【引领未来智造新纪元:量化机器人的革命性应用】
  • npm 或者yarn下载依赖卡顿报错 sill idealTree buildDeps
  • [Redis]典型应用——分布式锁
  • BGP笔记的基本概要
  • 开源模型应用落地-FastAPI-助力模型交互-进阶篇-RequestDataclasses(三)
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • GraphQL学习过程应该是这样的
  • jquery cookie
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • React+TypeScript入门
  • Shell编程
  • tensorflow学习笔记3——MNIST应用篇
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • underscore源码剖析之整体架构
  • 彻底搞懂浏览器Event-loop
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开发基于以太坊智能合约的DApp
  • 全栈开发——Linux
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浏览器事件循环的本质
  • 一个SAP顾问在美国的这些年
  • 用quicker-worker.js轻松跑一个大数据遍历
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​人工智能书单(数学基础篇)
  • # 飞书APP集成平台-数字化落地
  • #pragma once与条件编译
  • #QT(串口助手-界面)
  • (003)SlickEdit Unity的补全
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (二)fiber的基本认识
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)模仿学习-完成后台管理页面查询
  • (一)基于IDEA的JAVA基础10
  • (转) Face-Resources
  • (转)【Hibernate总结系列】使用举例
  • (转)Mysql的优化设置
  • (转)树状数组
  • (自用)仿写程序
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Standard 的管理策略