java8 按条件过滤集合
//黄色部分为过滤条件
list.stream().filter(user-> user.getId() > 5 && "1组".equals(user.group)).collect(Collectors.toList());
示例:
public class HelloWorld {
public static void main(String[] args) {
Random random = new Random();
List<User> list = new ArrayList<>();
for(int i=1;i<=20;i++) {
String group = (random.nextInt(3) + 1) + "组";//1-3组随机
User u = new User(i, "用户-" + i, group);
list.add(u);
}
System.out.println("过滤前:" + list);
//按条件过滤
List<User> filterList = list.stream().filter(user -> user.getId() > 5 && "1组".equals(user.group)).collect(Collectors.toList());
System.out.println("过滤 后:" + filterList);
}
private static class User{
Integer id;
String name;
String group;
public User(Integer id, String name, String group) {
this.id = id;
this.name = name;
this.group = group;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", group='" + group + '\'' +
'}';
}
}
}
执行结果:
过滤前:[User{id=1, name='用户-1', group='2组'}, User{id=2, name='用户-2', group='1组'}, User{id=3, name='用户-3', group='2组'}, User{id=4, name='用户-4', group='2组'}, User{id=5, name='用户-5', group='3组'}, User{id=6, name='用户-6', group='1组'}, User{id=7, name='用户-7', group='3组'}, User{id=8, name='用户-8', group='2组'}, User{id=9, name='用户-9', group='1组'}, User{id=10, name='用户-10', group='1组'}, User{id=11, name='用户-11', group='2组'}, User{id=12, name='用户-12', group='2组'}, User{id=13, name='用户-13', group='2组'}, User{id=14, name='用户-14', group='2组'}, User{id=15, name='用户-15', group='2组'}, User{id=16, name='用户-16', group='3组'}, User{id=17, name='用户-17', group='1组'}, User{id=18, name='用户-18', group='1组'}, User{id=19, name='用户-19', group='1组'}, User{id=20, name='用户-20', group='3组'}]
过滤 后:[User{id=6, name='用户-6', group='1组'}, User{id=9, name='用户-9', group='1组'}, User{id=10, name='用户-10', group='1组'}, User{id=17, name='用户-17', group='1组'}, User{id=18, name='用户-18', group='1组'}, User{id=19, name='用户-19', group='1组'}]
java8 按条件过滤集合的更多相关文章
- 使用Java Stream,提取集合中的某一列/按条件过滤集合/求和/最大值/最小值/平均值
不得不说,使用Java Stream操作集合实在是太好用了,不过最近在观察生产环境错误日志时,发现偶尔会出现以下2个异常: java.lang.NullPointerException java.ut ...
- Java8自定义条件让集合分组
/** * 将一个指定类型对象的集合按照自定义的一个操作分组: 每组对应一个List.最终返回结果类型是:List<List<T>> * * @param <T> ...
- 使用filter方法过滤集合元素
文章转自https://my.oschina.net/nenusoul/blog/658238 Problem 你想要筛选出集合中的一些元素形成一个新的集合,这些元素都是满足你的筛选条件的. Solu ...
- Java8 新特性之集合操作Stream
Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同 ...
- js数组Array根据动态条件过滤
数据 [{ "name": "张三", "score": 153 }, { "name": "李四" ...
- mysql多条件过滤查询之mysq高级查询
一.什么是高级查询: ① 多条件的过滤查询 简单说,即拼接sql语句,在sql查询语句之后使用: where 条件1 and/or 条件2 and/or 条件3 - ② 分页查询 二.多条件过滤查询: ...
- Mysql命令-以NULL做where条件过滤时应该写 IS NULL;
以NULL做where条件过滤时应该写 IS NULL;SELECT * FROM pet WHERE death IS NULL; SELECT * FROM pet WHERE death IS ...
- fiddler 按条件过滤
使用fiddler抓包过程中最希望获取自己想要的数据,不重要的信息最希望的是过滤,如果重要和不重要的数据都展示对我们在寻找资源的时候产生了很大的干扰,所以我们需要按条件过滤: 1.启用fiddler ...
- laravel的filter()方法的使用 (方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容)
filter 方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容: $collection = collect([1, 2, 3, 4]); $filtered = $collec ...
随机推荐
- localStorage sessionStorage 增强版
1. 保留了localStorage sessionStorage的(setItem getItem removeItem clear key)api,使用上几乎差不多 2. 增强了setItem方法 ...
- Java面试准备之数据库
一.考察点 1.联结 1.1 联结的概念: 简单的说,联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结. 1.2 联结的分类 注意:联结并不代表只有使用join关键字的才算是联结,w ...
- js 运行机制
<script> console.log(1) setTimeout(function(){ console.log(3) },0) console.log(2) </script& ...
- Sql Server登录失败问题
1.启动SQL Server 2008 Management Studio,会看到 2. 里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Ser ...
- c语言之数据类型
#include<stdio.h> int main(void) { float weight, value; printf("Are you worth your weight ...
- 使用埃拉托色尼筛选法(the Sieve of Eratosthenes)在一定范围内求素数及反素数(Emirp)
Programming 1.3 In this problem, you'll be asked to find all the prime numbers from 1 to 1000. Prime ...
- openstack搭建之-创建实例(13)
一. 创建flat网络的实例 #运行admin环境变量,创建网络类型为flat . admin-openrc openstack network create --share \ --provider ...
- python 支付宝SDK
python 支付宝SDK代码如下 from datetime import datetime from Crypto.PublicKey import RSA from Crypto.Signatu ...
- MySQL 中触发器的应用
在一个教育系统里面,有 科目表 ,章节表(每一科目对应若干大章节),小节表(每一大章节下面有若干小节),习题表(每一小节对应若干习题), 在后台管理系统中 有这样几个功能要实现,在 科目列表页面中 ...
- docker之常用命令、自定制镜像、公(私)仓库的上传和下载
一.docker命令 1.参数和命令汇总 1. 参数 Options: --config=~/.docker Location of client config files #客户端配置文件的位置 - ...