Predicate和Consumer接口是集合操作中常用到的俩个接口:

1、Predicate

public interface Predicate<T>{
boolean test(T t);//进行某些逻辑判断并返回一个boolean值
}

2、Consumer

public interface Consumer<T>{
void accept(T t);//对于给定的对象进行操作
}

3、结合实例

  • predicate
 Predicate<Integer> pre = x -> x >= 5;
System.out.println(pre.test(9));//输出结果为true
  • consumer
 import java.util.Collection;
import java.util.HashSet;
import java.util.function.Predicate;
import java.util.function.Consumer; public class PreCon {
public static void main(String []args){
Collection<String> c=new HashSet<String>();
c.add("!");
c.add("java");
c.add("hao");
c.add("ni");
c.add("zhe");
System.out.println(findSet(c,obj->System.out.println(obj),obj->((String)obj).length()<3)); //使用Lambda表达式(目标类型是Predicate)过滤集合
c.removeIf(ele -> ((String)ele).length() < 10);
System.out.println(c);
} public static int findSet(Collection collection, Consumer consumer,
Predicate predicate) {
int n = 0;
for (Object obj : collection) {
if (predicate.test(obj)) {
n++;
consumer.accept(obj);
}
}
return n;
}
}

 

 

Predicate接口和Consumer接口的更多相关文章

  1. Spring8中lambda表达式的学习(Function接口、BiFunction接口、Consumer接口)

    代码重构,为了确保功能的等效性,梳理代码时,发现如下代码: public SingleRespTTO fundI(SingleReqTTO request) throws Exception { re ...

  2. Java 8 : Predicate和Consumer接口

    1.consumer jdk 1.8 的 Iterable 接口中的 forEach 默认方法: public interface Iterable<T> { default void f ...

  3. Predicate和Consumer接口的使用

    //  Predicate   判断是否拥有资格,Consumer  改变输入的值 案例 public static MyTest2 getV(MyTest2 a, Predicate<MyTe ...

  4. Kafka Consumer接口

    对于kafka的consumer接口,提供两种版本,   high-level 一种high-level版本,比较简单不用关心offset, 会自动的读zookeeper中该Consumer grou ...

  5. Java常用函数式接口--Consumer接口andThen()方法使用案例(二)

    Java常用函数式接口--Consumer接口使用案例

  6. 常用的函数式接口Consumer接口练习字符串拼接输出

    题目 下面的字符串数组当中有多条信息,请按照格式"姓名: XX 性别: XX"的格式将信息打印出来,要求将 打印姓名的动作为第一个Consumer接口的Lambda实例,将打印性别 ...

  7. Callable接口、Runable接口、Future接口

    1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线 ...

  8. 源码阅读—Iterator接口和LIstIterator接口

    在继续看ArrayList源码之前,先了解Iterator接口和ListIterator接口,下篇文章详细讲解ArrayList是如何实现它们的. 我们知道,接口只是一种规范,当继承接口并实现其中的方 ...

  9. Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等

    一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...

随机推荐

  1. was not declared in this scope

    “was not declared in this scope”是一个错误信息,在编译的时候会遇到.其含义为标识符在其出现的地方是未被定义的. 出现该错误的时候,会同时把未定义的变量名显示出来.比如如 ...

  2. JSP中文乱码总结

    大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考.首先了解一下Java中文问题的由来: Java的内核和class文 ...

  3. $.ajx的用法

    $.ajax({type:'post',//可选geturl:'action.php',//这里是接收数据的PHP程序data:'data='dsa'',//传给PHP的数据,多个参数用&连接 ...

  4. eclipse安装svn

  5. spring-cloud-event-sourcing-example-master 运行效果及说明

    1.微服务架构下电商示例,部署成功!监控等技术细节未深入研究.      简单介绍:             配置服务(config-service ),端口8888,健康检查 xx:8888/hea ...

  6. html5与html4的区别,如何一眼区分

    还是在面试过程中遇到的这个问题,但是当时感觉回答的不是很全面,回来以后自己做的总结: 以上这个问题如果教大家看源码,可能一眼很直观的就能认出,那个是html4,那个是html5,但是面试的时候问道这个 ...

  7. C#动态生成html页

    Html生成模块:WriteHtml.cs using System.Collections.Generic; using System.IO; using System.Text; namespac ...

  8. netty 解决TCP粘包与拆包问题(二)

    TCP以流的方式进行数据传输,上层应用协议为了对消息的区分,采用了以下几种方法. 1.消息固定长度 2.第一篇讲的回车换行符形式 3.以特殊字符作为消息结束符的形式 4.通过消息头中定义长度字段来标识 ...

  9. svn版本搭建

    安装步骤如下: 1.yum install subversion   2.输入rpm -ql subversion查看安装位置,如下图:   我们知道svn在bin目录下生成了几个二进制文件. 输入 ...

  10. C#:时间转换

    1.C#时间转js时间 /// <summary> /// C#时间转js时间 /// </summary> /// <param name="theDate& ...