6、函数式编程--高级用法

news2024/12/28 1:55:28

目录

    • 7. 高级用法
      • 基本数据类型优化
      • 并行流
        • parallel()
        • parallelStream()

7. 高级用法

基本数据类型优化

​ 我们之前用到的很多Stream的方法由于都使用了泛型。所以涉及到的参数和返回值都是引用数据类型。

​ 即使我们操作的是整数小数,但是实际用的都是他们的包装类。JDK5中引入的自动装箱和自动拆箱让我们在使用对应的包装类时就好像使用基本数据类型一样方便。但是你一定要知道装箱和拆箱肯定是要消耗时间的。虽然这个时间消耗很下。但是在大量的数据不断的重复装箱拆箱的时候,你就不能无视这个时间损耗了。

​ 所以为了让我们能够对这部分的时间消耗进行优化。Stream还提供了很多专门针对基本数据类型的方法。

​ 例如:mapToInt,mapToLong,mapToDouble,flatMapToInt,flatMapToDouble等。

    private static void test27() {

        List<Author> authors = getAuthors();
        authors.stream()
                .map(author -> author.getAge())
                .map(age -> age + 10)
                .filter(age->age>18)
                .map(age->age+2)
                .forEach(System.out::println);

        authors.stream()
                .mapToInt(author -> author.getAge())
                .map(age -> age + 10)
                .filter(age->age>18)
                .map(age->age+2)
                .forEach(System.out::println);
    }

分析图:
在这里插入图片描述

并行流

​ 当流中有大量元素时,我们可以使用并行流去提高操作的效率。其实并行流就是把任务分配给多个线程去完全。如果我们自己去用代码实现的话其实会非常的复杂,并且要求你对并发编程有足够的理解和认识。而如果我们使用Stream的话,我们只需要修改一个方法的调用就可以使用并行流来帮我们实现,从而提高效率。

​ parallel方法可以把串行流转换成并行流。

    private static void test28() {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        Integer sum = stream.parallel()
                .peek(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer num) {
                        System.out.println(num+Thread.currentThread().getName());
                    }
                })
                .filter(num -> num > 5)
                .reduce((result, ele) -> result + ele)
                .get();
        System.out.println(sum);
    }

也可以通过parallelStream直接获取并行流对象。

        List<Author> authors = getAuthors();
        authors.parallelStream()
                .map(author -> author.getAge())
                .map(age -> age + 10)
                .filter(age->age>18)
                .map(age->age+2)
                .forEach(System.out::println);

分析图

parallel()

这个是集合转成stream流之后,stream流再调用parallel()方法变成并行流

在这里插入图片描述

parallelStream()

这个是集合转Stream流的时候,直接转成并行流

在这里插入图片描述

reduce求和分析图
在这里插入图片描述

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

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

相关文章

【触想智能】工业级触摸显示器的分类与应用分享

工业级触摸显示器是具有触摸功能的工业显示器&#xff0c;常见的触摸方式有电容触摸和电阻触摸。它是应用在工业上的设备&#xff0c;和普通的显示器有着很大的区别。 工业级触摸显示器由液晶触摸屏、功能主板、外壳三部分组成&#xff0c;结构用料一般都采用铝合金材质&#x…

企业现在开始准备应对2024技术趋势了

导读从完善和扩大人工智能的使用&#xff0c;到平衡创新需求与紧缩预算&#xff0c;企业需要了解多种新兴技术趋势。以下是将主导2024年的技术趋势&#xff0c;以及企业现在应该如何为此做好准备。 毫无疑问&#xff0c;2023年的主流技术趋势将集中在人工智能&#xff0c;更具…

Ubuntu 16.04 LTS third maintenance update release

Ubuntu 16.04 LTS (Xenial Xerus)今天迎来的第三个维护版本更新中&#xff0c;已经基于Linux Kernel 4.10内核&#xff0c;而且Mesa图形栈已经升级至17.0版本。Adam Conrad表示&#xff1a;“像此前LTS系列相似&#xff0c;16.04.3对那些使用更新硬件的用户带来了硬件优化。该版…

寻找可靠的软件外包开发公司

寻找可靠的软件外包开发公司是关键&#xff0c;以确保项目的顺利交付和质量。以下是一些方法和步骤&#xff0c;帮助您找到可靠的软件外包开发公司&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 明确…

众和策略:尾盘5分钟拉升意味着什么?

跟着投资者越来越重视股市改动&#xff0c;一些术语逐渐进入商场人员的词汇库中&#xff0c;例如“尾盘5分钟拉升”。这个概念在许多人眼中是听起来生疏的&#xff0c;但它实际上是股市生意中十分重要的一种现象。 简略来说&#xff0c;尾盘5分钟拉升是指股市在毕竟5分钟呈现了…

短视频剪辑矩阵系统开发解决的市场工具难点?

短视频剪辑矩阵系统开发源码----源头搭建 一、源码技术构建源码部署搭建交付之---- 1.需要协助系统完成部署、接口全部正常接入、系统正常运行多久&#xff1f;7个工作日 2.需要准备好服务器以及备案域名 3.短视频SEO模块一年项目带宽&#xff0c;带宽最低要求10M&#xff0c;…

解决笔记本无线网络5G比2.4还慢的奇怪问题

环境&#xff1a;笔记本Dell XPS15 9570&#xff0c;内置无线网卡Killer Wireless-n/a/ac 1535 Wireless Network Adapter&#xff0c;系统win10家庭版&#xff0c;路由器H3C Magic R2Pro千兆版 因为笔记本用的不多&#xff0c;一直没怎么注意网络速度&#xff0c;直到最近因为…

制作厂区电子地图所具备的必要条件分析

工业4.0时代的到来&#xff0c;使得制造业开始向智能化、网络化方向发展。随着科技的不断进步和数字化转型的加速&#xff0c;企业越来越需要利用先进的技术手段来提高运营效率。厂区电子地图能够更好地满足工厂智能化管理和运营的需求&#xff0c;促进数字化转型。那么如何制作…

2、Calcite 源码编译与运行

Calcite 源码编译与运行 一、概述 1&#xff09;简介 Calcite是一个数据库查询优化器。 2&#xff09;使用方式 1.将Calcite作为独立的服务&#xff0c;向下对接异构数据源&#xff0c;上层应用则使用Calcite原生的JDBC接口&#xff0c;利用SQL语句进行请求和响应。 2.将…

不同行业的WMS仓储管理系统解决方案要考虑哪些因素

随着经济的发展和社会的进步&#xff0c;各行各业对仓储管理的需求日益增长。WMS仓储管理系统解决方案作为物流管理的重要组成部分&#xff0c;在提高仓储效率、降低成本、提升服务质量等方面具有重要作用。然而&#xff0c;不同行业在WMS仓储管理系统设计方面面临着不同的难点…

vue+ts vite环境项目取不到process 解决方法

在tdesign文档中用官方的解决方案创建了一个 vue2ts项目 用的配置文件是 vite.config.js 这里 我做了一个简单的多环境配置 当我在js中 使用 console.log(process.env.VITE_APP_BASE_URL)代码会直接白屏 然后 报错内容大概就是 process 这个属性拿不到 在vite中 我们改成了…

【 OpenGauss源码学习 —— 列存储(CU)(一)】

列存储&#xff08;CU&#xff09; 概述cstore 存储单元结构&#xff08;CU&#xff09;CU 类CU 的构造函数Reset 函数 CU::CheckCrc 函数CU::GenerateCrc 函数CU::AppendValue 函数CU::AppendCuData 函数 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#…

win10如何取消文件夹分组

问题描述 最近不知道把哪里碰了&#xff0c;win10文件夹显示的文件都是按照日期分组了&#xff0c;很讨厌。如下图所示 修改方法 1、文件夹空白处-右击 2、分组依据(P)-选择(无)(N) 下面是操作好之后的效果图 结束 -----华丽的分割线&#xff0c;以下是凑字数&#xff0c;大…

嵌入式实时操作系统的设计与开发(aCoral线程学习)

真正的RTOS&#xff0c;基本上没有做到进程&#xff0c;只是停留在多线程&#xff0c;因为多进程要解决很多问题&#xff0c;且需要硬件支持&#xff0c;这样就使得系统复杂了&#xff0c;从而就可能影响系统实时性。 线程之间是共享地址的&#xff0c;也就是说当前线程的地址…

损失函数总结(一):损失函数介绍

损失函数总结&#xff08;一&#xff09;&#xff1a;损失函数介绍 1 引言2 损失函数是什么3 为什么要使用损失函数4 总结 1 引言 在网络模型进行训练时&#xff0c;激活函数、损失函数、优化器都会成为影响模型最终效果的关键因素。其中&#xff0c;激活函数和损失函数根据任…

vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用

vue3 v-md-editor markdown编辑器和预览组件的使用 概述安装支持vue3版本使用1.使用markdown编辑器 VMdEditor2.markdown文本格式前端渲染 VMdPreview 例子效果代码部分 完整代码 概述 v-md-editor 是基于 Vue 开发的 markdown 编辑器组件 轻量版编辑器 轻量版编辑器左侧编辑…

智慧党建小程序源码系统+在线答题考试二合一 带完整的搭建教程

大家好&#xff0c;今天来给大家分享一个智慧党建小程序源码系统。以下是部分核心代码图&#xff1a; 系统特色功能一览&#xff1a; 积分体系&#xff1a;党员可以通过完成各种党建活动&#xff0c;如学习党的理论知识、参加组织生活、开展志愿服务等获得积分&#xff0c;积分…

【JVM】synchronized与锁升级

文章目录 1. synchronized锁优化背景2. synchronized锁性能优化过程2.1 java5以前2.2 monitor锁2.3 java6开始 3. 无锁4. 偏向锁4.1 背景4.2 理论落地4.3 技术实现4.4 偏向锁的撤销4.5 题外话 5. 轻量级锁5.1 轻量级锁的加锁5.2 轻量级锁的释放5.3 锁升级 6. 重量级锁7. 锁升级…

本地安装telepresence,访问K8S集群 Mac(m1) 非管理員

kubeconfig 一&#xff0e;安装telepresence 1.安装 Telepresence Quickstart | Telepresence &#xff08;1&#xff09;brew install datawire/blackbird/telepresence 2.配置 目录kubectl 将使用默认的 kubeconfig 文件&#xff1a;$HOME/.kube/config 创建文件夹&…

集成电路CD40161-多功能计数器和分频器的重要性 | 百能云芯

在电子电路和数字系统设计中&#xff0c;CD40161是一款常用的集成电路&#xff08;IC&#xff09;元件。它是一个多功能的计数器和分频器&#xff0c;具有广泛的应用领域。云芯将带您深入解释CD40161的功能、特点、应用以及未来前景&#xff0c;帮助您更好地了解这一电子元件。…