java集合(3)-Java8新增的Predicate操作集合
Java8起为Collection集合新增了一个removeIf(Predicate filter)方法,该方法将批量删除符合filter条件的所有元素.该方法需要一个Predicate(谓词)对象作为参数,Predicate也是函数式接口,因此可以使用Lambda表达式作为参数.
package com.j1803.collectionOfIterator;
import java.util.Collection;
import java.util.HashSet;
public class IteratorTest {
public static void main(String[] args) {
//创建集合books
Collection books=new HashSet();
books.add("PHP");
books.add("C++");
books.add("C");
books.add("Java");
books.add("Python");
System.out.println(books);
//使用Lambda表达式(目标类型是Predicate)过滤集合
books.removeIf(ele->((String)ele).length()<=3);
System.out.println(books); }
}
调用集合Collection的removeIf()方法批量删除符合条件的元素,程序传入一个Lambda表达式作为过滤条件:所有长度小于等于3的字符串元素都会被删除.运行结果为:
[Java, C++, C, PHP, Python]
[Java, Python] Process finished with exit code 0
使用Predicate可以充分简化集合的运算,
public class IteratorTest {
public static void main(String[] args) {
//创建集合books
Collection books=new HashSet();
books.add("PHP");
books.add("C++");
books.add("C");
books.add("Java");
books.add("Python");
System.out.println(books);
//统计书名包括出现"C"字符串的次数
System.out.println(calAll(books,ele->((String)ele).contains("C")));
}
public static int calAll(Collection books, Predicate p){
int total=0;
for (Object obj:books) {
//使用Predicate的test()方法判断该对象是否满足predicate指定的条件
if(p.test(obj)){
total ++;
}
}
return total;
}
}
[Java, C++, C, PHP, Python]
2
Process finished with exit code 0
calAll()方法会统计满足Predicate条件的图书.
java集合(3)-Java8新增的Predicate操作集合的更多相关文章
- java集合(3)-Java8新增的Stream操作集合
Java8新增了Stream,IntStream,LongStream,DoubleStream等流式API,这些API代表多个支持串行和并行聚集操作的元素.上面的4个接口中,Stream是一个通用的 ...
- <JAVA8新增内容>关于集合的操作(Collection/Iterator/Stream)
因为下文频繁使用lambda表达式,关于Java中的lambda表达式内容请见: http://www.cnblogs.com/guguli/p/4394676.html 一.使用增强的Iterato ...
- 09_Java8操作集合的一些新特性
[使用forEach()结合Lambda表达式遍历集合] public class ForEachDemo { public static void main(String[] args) { Col ...
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- Java8新增的这些集合骚操作,你掌握了嘛?
目录 Iterable的forEach Iterator的forEachRemaining Collection的removeIf Stream操作 List的replaceAll List的sort ...
- Java8新特性 1——利用流和Lambda表达式操作集合
Java8中可以用简洁的代码来操作集合,比如List,Map,他们的实现ArrayList.以此来实现Java8的充分利用CPU的目标. 流和Lambda表达式都是Java8中的新特性.流可以实现对集 ...
- java之操作集合的工具类--Collections
Collections是一个操作Set.List和Map等集合的工具类. Collections中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控 ...
- Java创建List、Map等集合对象的同时进行赋值操作
title: Java创建List.Map等集合对象的同时进行赋值操作 date: 2019-11-28 23:25:47 tags: JavaSE categories: JavaSE 问题简介 ...
- Java开发笔记(六十五)集合:HashSet和TreeSet
对于相同类型的一组数据,虽然Java已经提供了数组加以表达,但是数组的结构实在太简单了,第一它无法直接添加新元素,第二它只能按照线性排列,故而数组用于基本的操作倒还凑合,若要用于复杂的处理就无法胜任了 ...
随机推荐
- maven把依赖打进jar包
1.把依赖打进sigma-api的jar包 <?xml version="1.0" encoding="UTF-8"?> <project x ...
- httprunner中的分层(api、testcase、testsuite)及实际使用
一.分层思想 api定义层:最底下的一层是api的定义层testcase层:测试用例层,调用定义层的内容testsuite:测试套件层 二.分层案例设计实现实践举例 1.api 层: 2.testca ...
- Springboot-Redis分布式锁 -----StringRedisTemplate
这里引用别人, 用来自己回忆 https://blog.csdn.net/jack_shuai/article/details/91986690 https://www.cnblogs.com/mox ...
- 菜鸟刷题路:剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...
- centos7 安装 bbr加速
脚本安装 1 查看内核版本 # [root@os]# uname -a Linux os 3.10.0-1127.13.1.el7.x86_64 x86_64 x86_64 x86_64 GNU/Li ...
- 「题解」黑暗塔 wizard
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题意简述 给定 \(y\),求 \(\varphi(x)=y\) 中 \(x\) 的个数和最大值. \(1\leq y\leq 10 ...
- Mybatis学习01:利用mybatis查询数据库
通过mybatis来操作mysql数据库的步骤大致可分为以下几步: 在这里,我们以对下面这个这个表格进行操作为例: 表名:ssm 1 配置依赖 在pom.xml中添加所需要的的依赖 <!-- m ...
- Golang修改操作系统时间
Golang修改操作系统时间 需求 程序有时需要和服务器对时,发现延迟过高修改本地时间,这段代码网上抄的,实测可用,windows环境需要以管理员身份启动命令提示符调试 实现Demo package ...
- Html中的canvas
使用cancas完成袋鼠跳跃的界面,这个是怎么做得呀,我哭了呀
- 三剑客-awk
1.作用特点 排除信息 查询信息 统计信息 替换信息 2.语法格式 awk [参数] '模式-动作' 文件 3.awk命令执行原理 4.命令使用方法 创建测试环境 [root@shuai ~]# ca ...