Java8特性:函数式接口与Stream流

news2024/9/25 23:18:05

1、 函数式接口

在这里插入图片描述

(1)四大函数式接口
在这里插入图片描述

(2)代码01

//void accept(T t);消费型接口,有参数,无返回
Consumer<String> consumer = t->{
    System.out.println(t);
};
consumer.accept("a");
//T get();供给型接口,无参数,有返回
Supplier<String> supplier = ()->{
  return UUID.randomUUID().toString();
};
System.out.println(supplier.get());

// R apply(T t);函数型接口,有参数,有返回
Function<String,Integer> function = t->{
    return t.length();
};
System.out.println(function.apply("abc"));

//boolean test(T t);断定型接口,有参数,有boolean返回
Predicate<String> predicate = t->{
  return t.startsWith("a");
};
System.out.println(predicate.test("abcd"));

(3)代码02

//R apply(T t);函数型接口,一个参数,一个返回值
Function<String,Integer> function = t ->{return t.length();};
System.out.println(function.apply("abcd"));

//boolean test(T t);断定型接口,一个参数,返回boolean
Predicate<String> predicate = t->{return t.startsWith("a");};
System.out.println(predicate.test("a"));

// void accept(T t);消费型接口,一个参数,没有返回值
Consumer<String> consumer = t->{
    System.out.println(t);
};
consumer.accept("javaXXXX");

//T get(); 供给型接口,无参数,有返回值
Supplier<String> supplier =()->{return UUID.randomUUID().toString();};
System.out.println(supplier.get());

2、Stream流

(1)是什么:
集合讲的是数据,流讲的是计算

(2)特性:
1)Stream 自己不会存储元素。
2)Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
3)Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

(3)如何使用
1)创建一个Stream:一个数据源(数组、集合)。
2)中间操作:一个中间操作,处理数据源数据。
3)终止操作:一个终止操作,执行中间操作链,产生结果。
源头=>中间流水线=>结果
代码:

//Stream流写法,把list转化为stream流
//Stream<User>
list.stream().filter(p -> {
    return p.getId() % 2 == 0;
}).filter(p -> {
    return p.getAge() > 24;
}).map(f -> {
    return f.getUserName().toUpperCase();
}).sorted((o1, o2) -> {
    return o2.compareTo(o1);
}).limit(1).forEach(System.out::println);
 

(4)代码

public static void main(String[] args) {
    User u1 = new User(11, "a", 23);
    User u2 = new User(12, "b", 24);
    User u3 = new User(13, "c", 22);
    User u4 = new User(14, "d", 28);
    User u5 = new User(16, "e", 26);

    List<User> list = Arrays.asList(u1,u2,u3,u4,u5);
    //list.forEach(System.out::println);
    list.stream().filter(p->{return p.getId()%2==0;})
            .filter(p->{return p.getAge()>24;})
            .map(f->{return f.getUserName().toUpperCase();})
            .sorted((o1, o2)->{return o2.compareTo(o1); })
            .limit(1).forEach(System.out::println);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAY42:动态规划(二)斐波那契数列+爬楼梯+最小花费爬楼梯

文章目录 509.斐波那契数列思路&#xff1a;动规五步确定dp数组和数组下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优化版优化思路 70.爬楼梯思路DP数组的含义以及下标含义递推公式DP数组初始化遍历顺序打印DP数组 完整版debug测试 空间复杂度优…

10.24UEC++、事件

1. 类内部声明事件类型&#xff1a; 生成actor 绑定到事件上 实现&#xff1a; 移除&#xff1a;

使用docker安装redis并使用redis deskTop manager连接

使用docker安装redis 提前准备环境 linux、 docker环境 # 使用命令查看docker环境是否正常docker images(任何一个docker命令就可以&#xff0c;不一定必须这个) 下载redis镜像 # 使用命令下载镜像文件docker pull redis 确认镜像 # 使用命令查看镜像docker images使用redis d…

功能测试的测试流程是什么样的?

概述 本流程是描述软件功能自动化测试过程中的步骤、内容与方法&#xff0c;明确各阶段的职责、活动与产出物。 流程活动图 活动说明 测试计划&#xff08;可选&#xff09; 与以前的测试计划过程一致&#xff0c;只是在原来的测试计划中&#xff0c;添加对项目实施自动化测试…

Qt窗体全屏与复原,子窗体全屏与复原

QT QWidget窗体全屏时&#xff0c;全屏与最大化的区别时最大化有标题框全屏没有框&#xff0c;可以使用自带的函数&#xff1a; showFullScreen(); 复原时也有专门的函数&#xff1a; showNormal(); 如果我想在点击最大化按钮时&#xff0c;让窗体全屏。这个时候最好有线程…

学好工作汇报,你离升职加薪也就不远了

在职场中&#xff0c;工作汇报是展示你的价值和成果的重要环节。无论你是想要升职还是加薪&#xff0c;一个出色的工作汇报能够给你带来巨大的竞争优势。然而&#xff0c;许多人对于如何进行有效的工作汇报感到困惑。在本文中&#xff0c;我们将向您介绍一些关键技巧和策略&…

路径规划算法:基于骑手优化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于骑手优化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Linux学习之vim在光标所在处写入内容,保存退出

vim insertTest使用vim打开一个叫做insertTest新文件。 输入命令之后&#xff0c;按下Enter&#xff08;回车键&#xff09;&#xff0c;就可以进入下边的操作页面。 按i在当前光标位置处&#xff0c;就可以插入内容了。 接下来写入内容跟记事本里边是差不多的。 按一下…

【Spring】Spring基础知识 Java开发必看

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果&#xff0c;但是如果换成onclick绑定事件则会提示没有该方法。主要原因是&#xff1a; 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西&#xff0c;因为methods里的代码是编译…

物体识别(香蕉)

✨✨✨ 感谢优秀的你打开了小白的文章 “希望在看文章的你今天又进步了一点点&#xff0c;生活更加美好&#xff01;”&#x1f308;&#x1f308;&#x1f308; 目录 1.数据集下载 2.数据集导入 3.结果 1.数据集下载 包含所有图像和CSV标签文件的香蕉检测数据集可以直接从互…

day1-二分查找

二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解…

单片机基于stm32单片机的数字温度计设计_kaic

摘 要 古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是…

什么是IP地址定位技术

IP地址定位是一种技术手段&#xff0c;可以通过获取设备的IP地址精确定位设备的地理位置。它在现代社会的许多方面都有广泛的应用&#xff0c;包括网络安全、广告投放市场调研等。 在互联网时代&#xff0c;人们越来越依赖于网络而IP地址作为网络连接的基石扮演着重要的角色。…

什么软件支持快速批量处理大量视频素材呢

在视频剪辑的过程中&#xff0c;有时候为了满足视频时长的需求&#xff0c;或者为了实现视频与音频的同步操作&#xff0c;我们可能需要对视频的播放速度进行调整。如果需要处理大量的视频文件&#xff0c;传统的手动一个个调整的方法就显得有点落后了&#xff0c;今天小编要与…

JDBC事务特性

1、 事务的四种特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;原子性是指事务是一个不可分割的执行单元或者叫工作单位&#xff0c;事务中的操作&#xff0c;要么都发生&#xff0c;要么都不发生。 一致性&#xff08;Consistency&am…

centos7.9 安装redis5.0.7记录

参考自己之前写的安装5.0.3 centos7安装redis5.0.3详细步骤_lanren312的博客-CSDN博客 一开始大意了&#xff0c;没有安装gcc&#xff0c;直接就make [rootlocalhost redis-5.0.7]# make cd src && make all make[1]: Entering directory /opt/redis-5.0.7/srcLINK re…

Docker 多架构镜像介绍和最佳实践

Docker 多架构镜像介绍和最佳实践> 更多云原生相关技术分享请关注公众号&#xff1a;CloudNativeOps &#xff1b; 添加微信 GoOps888&#xff0c;备注 ‘加群’ 可加入云原生技术交流群。 一、多架构镜像介绍 在 Docker 中&#xff0c;同一个 Docker 镜像可以在不同的平台…

rosserial协议通信--向ros写调用过程和读取数据调用过程

rosserial通信向ros写调用过程如下&#xff1a; 在32单片机中&#xff0c;发布者调用publish函数&#xff0c;然后依次逆向&#xff08;上图是分析过程&#xff1b;调用过程逆向&#xff09;查看上图&#xff0c; 最终操作串口&#xff0c;向上位机发布数据进行通信。 rosser…

代码随想录第24天 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II

93.复原IP地址 /*** param {string} s* return {string[]}*/ let road [];let path [];var restoreIpAddresses function (s) {road [];if (s.length > 12 || s.length < 4) return [];//开始就判断&#xff0c;长度大于12的字符窜或者小于4的都不行backtracking(s,…