Java中解决lambda表达式内部访问在其外部定义的变量-使用mapToInt

news2024/11/24 20:04:32

场景

Java8新特性-Stream对集合进行操作的常用API:

Java8新特性-Stream对集合进行操作的常用API_霸道流氓气质的博客-CSDN博客_streamapi对集合修改

上面介绍Stream的相关使用示例。

如果遇到在lambda表达式内部访问在其外部定义的变量,比如一个求和算法

        List<Integer> integers = Arrays.asList(1, 2, 4, 6, 7, 9);

        int total = 0;
        //采用传统的for-each循环对所有值求和
        for (int n:integers
             ) {
            total +=n;
        }

        System.out.println(total);

除了采用传统for循环之外,如果想使用lambda表达式实现

        total = 0;
        //forEach方法传入Consumer作为参数,如果Consumer试图修改tatal变量,则代码不会编译
        //integers.forEach(integer -> total +=integer);//不通过编译

则代码不会通过编译。

 

必须将在 lambda 表达式内部访问的局部变量声明为 final,

或使其具备等同于 final 的效果(effectively final)。可以对特性(attribute)进行访问和修改。

在 Java 8 中,变量不必采用 final 修饰,但必须具备等同于final的效果。

换言之,任何试图修改局部变量值的代码都不会被编译。

可以通过将流转换为IntStream并调用sum方法。

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

        total = integers.stream()
                .mapToInt(Integer::valueOf)
                .sum();
        System.out.println(total);

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

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

相关文章

MATLAB-surf/ezsurf函数绘制三维图形

&#xff08;1&#xff09;surf 函数的用法和 mesh函数类似&#xff0c;MATLAB中 surf函数专门用于绘制三维着色曲面图和 surfc是通过矩形区域来观测数学函数的函数。surf和 surfc能够产生由X、Y、Z指定的有色参数化曲面&#xff0c;即三维有色图。具体调用方法如下。1、surf(Z…

JDBC数据库连接

下载jdbc jar包&#xff0c;中央仓库下载https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.24项目导入右键jar包&#xff0c;然后add as library数据库操作3.1连接数据库package com.heima.jdbc;import java.sql.Connection; import java.sql.DriverManager…

Appium自动化测试环境搭建

Appium自动化环境搭建 首先整体了解一下Appium自动化环境搭建都需要哪些软件或者组件 Python、Appium、AndroidSDK&#xff08;主要是adb.exe、aapt.exe&#xff09;、Node Js、java 一、安装并配置java环境 1、这个可以搜到的教程实在是太多了&#xff0c;建议直接官方下载…

汽车数据分析,2022年汽车产量总体高于2021年,年产量增长了6%左右

哈喽&#xff0c;大家好&#xff0c;春节将近&#xff0c;想必大家也开始抢票准备回家过年了&#xff0c;有车的伙伴也可能打算自驾归家了。大家辛苦工作了一年&#xff0c;手里积攒了一些积蓄&#xff0c;有些伙伴可能想赶在春节购车购房&#xff0c;这里小编为大家准备了一些…

java面试之设计篇

一、基础 1.六大设计原则 单一职责原则 一个类只专注于做一件事&#xff1b;高内聚&#xff0c;低耦合&#xff1b; 开闭原则 对拓展开放&#xff0c;对修改关闭&#xff08;尽可能不动原有代码进行拓展&#xff09;&#xff1b; 高内聚&#xff0c;低耦合&#xff1b; 为达到…

电力系统|基于分布式高斯-牛顿方法结合置信传播 (BP) 的概率推理方法的非线性状态估计 (SE) 模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4dd;目前更新&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;电力系统相关知识&#xff0c;期刊论文&…

新考纲下的PMP考试有多难?

一&#xff0c;2022新考纲PMP考试有多难&#xff1f; PMP考试被认为是最难的项目管理考试之一&#xff0c;主要是因为其庞大的教学大纲、所需的投入的精力、所问问题的类型和长度、考试时间和答案选择。它测试候选人对项目管理技能和耐心水平的深入了解。这并不意味着不可能通…

舆情监测是什么技术,网络舆情监测技术操作规范?

网络舆情监测是对互联网上公众的言论和观点进行监视和预测的行为&#xff0c;随着互联网的发展&#xff0c;舆情监测已经是企业日常重要工作&#xff0c;对于企业来说是非常重要的&#xff0c;接下来TOOM舆情监测带您了解舆情监测是什么技术&#xff0c;网络舆情监测技术操作规…

基于Python卷积神经网络的动物识别系统源码,动物检测系统源码,宠物识别系统源码

毕设系列-基于卷积神经网络的动物识别系统 完整代码下载地址&#xff1a;基于Python卷积神经网络的动物识别系统源码 上期评论区有好兄弟留言想看动物检测系统&#xff0c;那咱们这期检测系列就更新动物检测系统&#xff0c;并且在之前功能的基础之上添加了计数的功能&#x…

SD3403/SS928V100 移植Yolo模型

1.前言参考的文档名称为《驱动和开发环境安装指南》&#xff0c;首先安装Ubuntu18.04 系统&#xff0c;这次为了方便起见重新做了一个虚拟机&#xff0c;也建议这样做&#xff0c;因为装的很多软件都有版本的要求&#xff0c;避免版本更改导致的别的软件不能运行&#xff0c;单…

ThinkPHP5漏洞分析之SQL注入(七)

说明 该文章来源于同事lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明0x00 从?s是个啥开始0x01 模型/控制器/方法的处理0x02 漏洞原因0x03 参数的获取&#xff1f;参考链接&#xff1a;Mochazz/ThinkPHP-Vuln/ 影响版本&am…

ThinkPHP5之文件包含审计分析(六)

说明 该文章来源于同事lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明method方法调用链&#xff1a;程序启动时&#xff1a;后门技巧利用method的任意方法调用&#xff0c;调用构造函数__construct&#xff0c;且调用时会传…

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

同盾科技是中国领先的人工智能科技企业。为了确保服务的低延迟和高可用性&#xff0c;同盾的技术团队不断寻找最佳的技术架构。经过长时间调研&#xff0c;他们最终选择了新一代分布式数据库 TiDB 作为离线层的核心数据库&#xff0c;基于 TiDB 打造的实时数据架构为风控智能决…

Java中常用API总结(3)—— Runtime类(含实例解读)

Runtime类一、前言二、概述1.API帮助文档2.概述三、常用方法1.获取当前系统的运行环境对象1️⃣格式2️⃣实例2.获取CPU总线程数1️⃣格式2️⃣实例3.能够获取总内存大小(单位byte)1️⃣格式2️⃣实例4.已经从系统中获取总内存大小(单位byte)1️⃣格式2️⃣实例5.剩余内存大小1…

【开源项目】Sa-Token快速登录(使用+源码解析)

什么是Sa-Token 官网&#xff1a;https://sa-token.dev33.cn Sa-Token 是一个轻量级 Java 权限认证框架&#xff0c;主要解决&#xff1a;登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。 快速使用 引入Maven依赖 <!-- w…

有奖征集丨大数据/人工智能模型开发征集

大数据人工智能模型开发征集 为助力构建创新型人才培养模式&#xff0c;培养具有创新精神和实践能力的高素质智能技术人才&#xff0c;激发学生积极参与数据科学研究、技术开发、数据学科竞赛等各类社会实践活动的创新热情。依托模型交易平台&#xff0c;为学生提供自主学习…

认识Linux系统结构

Linux 系统一般有 4 个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell 和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 Linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;…

linux系统中进一步理解设备树

第一&#xff1a;前言 大家好&#xff0c;我是ST。 目录 第一&#xff1a;前言 第二&#xff1a;框图 第三&#xff1a;体验设备树 第四&#xff1a;实验过程分析 第五&#xff1a;实验代码 1、应用程序ledtest.c&#xff1a; 2、驱动层leddrv.c 3、硬件层&#xff1a…

不忘初心,坚持创作和分享,做自己喜欢的事 - 2022 年回顾

不知不觉&#xff0c;来到 Elastic 已经三年多了。在 Elastic 的三年&#xff0c;是疫情发生的三年。对很多人来说&#xff0c;疫情对我们的工作和学习都有很大的变化。好在我还能静下心来&#xff0c;每天坚持学习&#xff0c;不断地创作。记录下来自己的学习及成长经历。我学…

苹果电脑数据回复Aiseesoft Data Recovery

苹果电脑照片误删了怎么找回&#xff0c;数据丢失怎么办&#xff1f;Aiseesoft Data Recovery是专业数据恢复软件&#xff0c;能够帮助你恢复几乎所有删除/丢失的文件&#xff0c;如照片&#xff0c;文件&#xff0c;电子邮件&#xff0c;音频&#xff0c;视频且支持从计算机&a…