java消费者接口应用_几个常用的Java接口之Consumer、Supplier、Predicate和Function

2023-10-27

Java8之Consumer、Supplier、Predicate和Function攻略!

来聊聊Consumer、Supplier、Predicate、Function这几个接口的用法,在 Java8 的用法当中,这几个接口虽然没有明目张胆的使用,但是,却是润物细无声的。为什么这么说呢?

这几个接口都在 java.util.function 包下的,分别是Consumer(消费型)、supplier(供给型)、predicate(谓词型)、function(功能性),相信有了后面的解释,你应该非常清楚这个接口的功能了。

那么,下面,我们从具体的应用场景来讲讲这个接口的用法!

1 Consumer接口

从字面意思上我们就可以看得出啦,consumer接口就是一个消费型的接口,通过传入参数,然后输出值,就是这么简单,Java8 的一些方法看起来很抽象,其实,只要你理解了就觉得很好用,并且非常的简单。

我们下面就先看一个例子,然后再来分析这个接口。

1.1 Consumer实例

/**

* consumer接口测试

*/

@Test

publicvoidtest_Consumer() {

//① 使用consumer接口实现方法

Consumer consumer = newConsumer() {

@Override

publicvoidaccept(String s) {

System.out.println(s);

}

};

Stream stream = Stream.of("aaa","bbb","ddd","ccc","fff");

stream.forEach(consumer);

System.out.println("********************");

//② 使用lambda表达式,forEach方法需要的就是一个Consumer接口

stream = Stream.of("aaa","bbb","ddd","ccc","fff");

Consumer consumer1 = (s) -> System.out.println(s);//lambda表达式返回的就是一个Consumer接口

stream.forEach(consumer1);

//更直接的方式

//stream.forEach((s) -> System.out.println(s));

System.out.println("********************");

//③ 使用方法引用,方法引用也是一个consumer

stream = Stream.of("aaa","bbb","ddd","ccc","fff");

Consumer consumer2 = System.out::println;

stream.forEach(consumer);

//更直接的方式

//stream.forEach(System.out::println);

}

输出结果

afe7aea988b19b5d28e468fc1778d0f4.png

1.2 实例分析

① consumer接口分析

在代码①中,我们直接创建 Consumer 接口,并且实现了一个名为 accept 的方法,这个方法就是这个接口的关键了。

我们看一下 accept 方法;这个方法传入一个参数,不返回值。当我们发现 forEach 需要一个 Consumer 类型的参数的时候,传入之后,就可以输出对应的值了。

② lambda 表达式作为 consumer

Consumer consumer1 = (s) -> System.out.println(s);//lambda表达式返回的就是一个Consumer接口

在上面的代码中,我们使用下面的 lambda 表达式作为 Consumer。仔细的看一下你会发现,lambda 表达式返回值就是一个 Consumer;所以,你也就能够理解为什么 forEach 方法可以使用 lamdda 表达式作为参数了吧。

③ 方法引用作为 consumer

Consumer consumer2 = System.out::printl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java消费者接口应用_几个常用的Java接口之Consumer、Supplier、Predicate和Function 的相关文章

  • PHP判断密码强弱级别

    1 div class form group 2 i class icons icon pwd2 i 3 div
  • 全网最全面的西门子1500硬件冗余项目,博图15.1

    全网最全面的西门子1500硬件冗余项目 博图15 1 非常全面 CAD图纸 合同 上位机软件是intcohid 644593395557
  • 序列检测器

    序列检测器 目标检测连续的三个1 6 6 4章节 第一种方法是采用状态机 第二种方法是用移位寄存器来存储输入值 并检测寄存器的值是否和预设的序列相匹配
  • Linux系统gdb调试常用命令

    GDB GNU调试器 是一款常用的调试工具 用于调试C C 等编程语言的程序 以下是一些常用的GDB命令 1 启动程序 gdb
  • jQuery笔记 (完整详细版)

    2018 9 17 星期一 jQuery 第一章 初识jQuery 第二章 jQuery的事件和API 第三章 jQuery中的动画 第一章 初识jQuery 一 jQuery简介 1 什么是jQuery jQuery是一个优秀的JavaS
  • VUE高德地图实现根据移动覆盖点获得经纬度坐标和详细地址及根据经纬度确定覆盖点

    经纬度手动定位 输入经纬度 显示详细地址 async handleMapPositioning const result await this api getProductLocation this unionId this reMap n
  • C++类

    一个简单的类 定义一个类 class MyClass 类名 public 访问修饰符 MyClass 构造函数 MyClass 析构函数 void function 成员函数 也叫成员方法 private int m data 成员数据 不
  • C++ 计算代码运行时间

    在算法比较中 耗时是一个重要的指标 每次都要去搜别人的博客 今天摘抄一下askunix hjh的博客 感谢博主 原文记录了三种办法 我选择了其中比较易懂的 GetTickCount是函数 GetTickCount返回 retrieve 从操
  • k8s部署Dashboard可视化插件

    DashBoard可视化插件 可以给用户提供一个可视化的Web界面来查看当前集群的各种信息 一 下载Dashboard所需的yaml文件 wget https raw githubusercontent com kubernetes das
  • 关闭虚拟机的防火墙

    CentOS6 切换至root用户 然后输入 service iptables stop 命令即可关闭防火墙 CentOS7 切换至root用户 先输入 systemctl stop firewalld 命令关闭防火墙 然后输入 syste
  • dataclass的作用

    dataclasss的作用 from dataclasses import dataclass dataclass class Person name str age int gender str unknown init 方法用于初始化对
  • HTML转义字符大全

    1 常用转义字符 转义字符串 Escape Sequence 也称字符实体 Character Entity 在HTML中 定义转义字符串的原因有两个 第一个原因是像 lt 和 gt 这类符号已经用来表示HTML标签 因此就不能直接当作文本
  • 学习 bison 原理(四)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 学习 bison 原理 四 第5步 转变第 4 步的状态机为确定的 LALR 状态机 在 三 中我们已经看到 LR0 状态机很可能有 r r 冲突 s r 冲突 那这关键的
  • QList与QVector

    看qt的文档 只要是不要求数据所存放的内存是连续的 都建议用QList 因为QList的查询速度跟QVecotr是差不多的 感觉有点奇怪 至少与我之前所认识的List的查询是一不样的 好吧 看看源码的 原来QList的元素的指针是通过数组来
  • 文本处理——基于 word2vec 和 CNN 的文本分类 :综述 & 实践(一)

    原文地址 https zhuanlan zhihu com p 29076736 导语 传统的向量空间模型 VSM 假设特征项之间相互独立 这与实际情况是不相符的 为了解决这个问题 可以采用文本的分布式表示方式 例如 word embedd
  • ohmyzsh主题修改

    1 选择主题 ohmyzsh Themes by Github 2 修改zsh配置 vim zshrc 3 使配置生效 source zshrc 效果如下
  • 二、初识arduino uno开发板

    开发板参数表 什么是arduino Arduino是一款便捷灵活 方便上手的开源电子原型平台 包含硬件 各种型号的Arduino板 和软件 ArduinoIDE 构建于开放原始码simple I O介面版 并且具有使用类似Java C语言的
  • Golang闭包陷阱

    golang闭包陷阱本质原理其实是range陷阱 Golang for range陷阱 ep 1 func main var values int 1 2 3 4 5 for value range values go func fmt P
  • 编译 OneFlow 模型

    本篇文章译自英文文档 Compile OneFlow Models tvm 0 14 dev0 documentation 作者是 BBuf Xiaoyu Zhang GitHub 更多 TVM 中文文档可访问 Apache TVM 是一个

随机推荐

  • 3月6日服务器例行维护公告,2014年3月6日停机维护公告

    亲爱的玩家 为了保证服务器的稳定和服务质量 新大话西游2 将于2014年3月6日早上8 00停机 进行每周例行的维护工作 维护时间为早上08 00至09 30 同时 本次停机还将发布最新的客户端补丁 patch2 0 476 如果在维护期间
  • Java高级编程——多线程(JDK5新增创建线程方式Callable,线程池)

    创建线程的第三 四种方式 一 实现Callable接口 1 1与Runnable相比 1 2实现步骤 创建Callable接口实现类 重写call方法 新建实现类对象 将实现类对象作为参数传递待FutureTask的构造器中 创建Futur
  • 使用redis进行用户接口访问时间次数限制

    使用redis进行用户接口访问时间次数限制 假设一个用户 用IP判断 每分钟访问某一个服务接口的次数不能超过10次 import org apache commons lang3 StringUtils import org slf4j L
  • Android Studio一直Waiting for build to finish

    今天安卓的gradle文件出现问题 所以将C Users Administrator gradle删除 接下来出现下图的问题 这是由于安卓缺少gradle文件 图片来自https blog csdn net Hanghang article
  • 手撕yolo3系列——详解主干网络darknet53代码(详细注释)

    完整代码百度云直达链接 包含预训练权重 小白注释 https pan baidu com s 1US6e93OaCYOghmF21v0UIA 提取码 z8at 参考链接 注 代码是大神的代码 在此基础上添加了详细的小白注释 方便我以后阅读
  • Keil调试即全速运行/断点不停的其中一个原因

    平台 芯片 STM32F767IGT6 环境 Keil 5 14 00 问题 keil 下载程序可以执行 调试时刚进调试就上电运行 打断点不停 但是程序正常在跑 可以单步调试 原因 Jlink硬件版本和驱动的问题 解决 之前电脑使用stm3
  • image.shape[0],image.shape[1],image.shape[2]

    import cv2 image cv2 imread D shape bmp print image shape 0 print image shape 1 print image shape 2 结果 300 200 3 其中shape
  • mysql8.0安装之后,无法使用密码正常登陆

    修改方法 重置密码 以下为步骤 1 以管理员身份先关闭mysql服务器 net stop mysql 删除mysql目录下data文件夹 如果有就删除 2 在mysql目录下输入 mysqld initialize user mysql c
  • python如何判断是否为整数

    python 判断是否为整数的方法 1 使用 type 函数判断 代码为 type name bases dict 2 使用 isinstance 函数判断 代码为 isinstance object classinfo 本教程操作环境 w
  • java 生成随机字母数字组合

    import java util Random public class RandomTest 方法1 生成随机数字和字母组合 param length return public static String getCharAndNumr
  • 让UE4中的TextRender永远面向摄像机,就像Billboard那样!

    让UE4中的TextRender永远面向摄像机 就像Billboard那样 让UE4中的TextRender永远面向摄像机就像Billboard那样 前言 Find Look At 函数 BillBoard 材质编程 前言 最近找了个兼职
  • socket网络编程(二)(tcp udp)

    1 socket大概介绍 Socket的中文翻译过来就是 套接字 套接字是什么 我们先来看看它的英文含义 插座 Socket就像一个电话插座 负责连通两端的电话 进行点对点通信 让电话可以进行通信 端口就像插座上的孔 端口不能同时被其他进程
  • 负电压实现方法

    目录 方法一 负压芯片实现 方法二 Buck Boost电路方法 方法三 用Buck芯片产生出负压 结论 方法一 负压芯片实现 在电子市场或电子网站上 可以很容易找到使用charge pump方式的负电压芯片 但是输入的电压最高只有5 5V
  • 中青杯数学建模竞赛是什么级别的比赛_比赛介绍

    一 背景介绍 美国大学生数学建模竞赛 MCM ICM 由美国数学及其应用联合会主办 是唯一的国际性数学建模竞赛 也是世界范围内最具影响力的数学建模竞赛 为现今各类数学建模竞赛之鼻祖 二 活动目的 MCM ICM的宗旨是鼓励大学师生对范围并不
  • Variational Auto-encoder(VAE)变分自编码器-Pytorch

    import os import torch import torch nn as nn import torch nn functional as F import torchvision from torchvision import
  • 领地人生服务器维护,领地人生gm代码是什么 领地人生服务器指令

    领地人生是一款非常真实的沙盒生存类游戏 游戏中玩家将要成为一名生存者 需要通过不断造房屋 猎杀野兽生存下来 游戏中的一些指令可以加快你的建造速度 下面就和小编一起来看看吧 GM password 开 关 GM模式 例如 gm mysecre
  • Numpy数组排序

    numpy sort a axis 1 kind quicksort order None 返回已排序新数组 参数说明 axis 可选参数 取值整数或None 若axis为None 数组先偏平化 降维 再排序 若axis N 表示沿着数组的
  • Android小项目集合100多个

    是学习和联系Android小项目的使用资料 排名完全是根据 GitHub 搜索 Java 语言选择 Best Match 得到的结果 然后过滤了跟 Android 不相关的项目 所以排名并不具备任何官方效力 仅供参考学习 方便初学者快速了解
  • C++11 promise

    目录 一 promise 二 定义 三 成员函数 四 get future 五 设置结果 1 set value 2 set value at thread exit 3 set exception 4 set exception at t
  • java消费者接口应用_几个常用的Java接口之Consumer、Supplier、Predicate和Function

    Java8之Consumer Supplier Predicate和Function攻略 来聊聊Consumer Supplier Predicate Function这几个接口的用法 在 Java8 的用法当中 这几个接口虽然没有明目张胆