【stream流】集合中每个对象的某属性值进行求和

场景:购物车中选中多条商品,计算出选中商品的总价。
业务:一个集合,求集合中多个对象某个属性值的总和。
常规做法:集合进行for循环遍历,从中拿到对象的属性值,进行累加。
痛点:代码行数多,不够优雅。

在Java中,可以使用Stream API来达到我们的目标。Stream API 是Java 8引入的一种新特性,允许在集合上进行各种操作。以下是一个例子:

假设一个List,其中Product是一个包含money属性的类:

public class Product {private Integer money;public Product(Integer money) {this.money = money;}public Integer getMoney() {return money;}
}

可以使用以下代码来将这个List中的所有money属性值相加:

public static void main(String[] args) {List<Product> list = Arrays.asList(new Product(100), new Product(200), new Product(300));int sum = list.stream().mapToInt(Product::getMoney).sum();System.out.println("三件商品的总价为:" + sum);
}

输出结果:

三件商品的总价为:600

让我们逐步解释以上操作:

  • stream(): 这是Java中Collection接口新增的方法之一,它返回一个流(Stream)对象。流是一系列元素的抽象序列,它允许你以声明性的方式对数据进行操作。

  • mapToInt: 这是Stream API中的一个转换操作。mapToInt接受一个函数作为参数,该函数用于将流中的每个元素映射为一个int。这个函数会被应用到流中的每个元素,然后将结果放入一个新的IntStream中。

  • 综合起来,stream().mapToInt的目的是将一个集合(或流)中的元素映射为int类型,并返回一个IntStream。这通常用于将对象流转换为原始数据类型的流,以便进行更高效的操作,例如数值计算。

在我们这个例子中,我们首先使用Arrays.stream将字符串数组转换为流,然后使用mapToInt将这个函数Product::getMoney的结果转换为对应的整数。最后,我们使用sum方法计算所有整数的和。这个例子中,Product::getMoney是一个函数,它将获取对象中的money值。这个函数是通过方法引用传递给mapToInt的。

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

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

相关文章

http协议九种请求方法介绍及常见状态码

http1.0定义了三种&#xff1a; GET: 向服务器获取资源&#xff0c;比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似&#xff0c;返回的响应中没有具体的内容&#xff0c;用于获取报头 http1.1定义了六种 PUT&#xff1a;一般是用于更新请求&#xff0c;…

K8S--持久卷(PersistentVolume)的用法

原文网址&#xff1a;K8S--持久卷(PersistentVolume)的用法-CSDN博客 简介 本文介绍K8S的持久卷(PersistentVolume)的用法。 目标&#xff1a;用持久卷的方式将主机的磁盘与容器磁盘映射&#xff0c;安装nginx并运行。 --------------------------------------------------…

使用电脑多年的你不可不知:移动机械硬盘的正确使用姿势

前言 随着科技的发展&#xff0c;小伙伴手边或多或少都有移动硬盘这个存储设备。上班族用来存储资料&#xff0c;家人用来存放回忆。但移动机械硬盘的使用过程中是有注意事项的&#xff0c;你知道多少移动机械硬盘的使用注意事项呢&#xff1f; 今天小白就跟各位小伙伴来唠唠…

Minecraft教程:使用MCSM面板搭建我的世界私服并实现远程联机

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

论文阅读 Attention is all u need - transformer

文章目录 1 摘要1.1 核心 2 模型架构2.1 概览2.2 理解encoder-decoder架构2.2.1 对比seq2seq&#xff0c;RNN2.2.2 我的理解 3. Sublayer3.1 多头注意力 multi-head self-attention3.1.1 缩放点乘注意力 Scaled Dot-Product Attention3.1.2 QKV3.1.3 multi-head3.1.4 masked 3.…

图像中部分RGB矩阵可视化

图像中部分RGB可视化 今天室友有个需求就是模仿下面这张图画个示意图&#xff1a; 大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画&#xff0c;我寻思这不直接秒了。 import cv2 as cv import numpy as np import matplotlib.pyplot as pltclass …

书生·浦语大模型全链路开源体系 学习笔记 第三课

huggingface-cli: command not found 按照该文档解决即可 https://github.com/huggingface/huggingface_hub/issues/1079 具体如下&#xff1a; 1、确保环境已将安装huggingface-cli 2、版本需要旧版&#xff0c;pip install huggingface_hub0.20.1 3、再按如下执行 # T…

【Helm 及 Chart 快速入门】02、Helm 基本使用

目录 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 1.2 部署 chart 应⽤ 1.3 删除 chart 应⽤ 1.4 定制参数部署应⽤ 1.5 chart 应⽤升级 1.6 chart 应⽤回滚 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 使⽤ helm search repo 关键字可以查看相关 charts&#xff1a; […

QT c++ 双精度浮点数转换成4个16位数

在进行modbus通讯中&#xff0c;将双精度数写入设备中&#xff0c;需要把它拆成4个寄存器&#xff0c;再发出去。 在从设备中读取很多个寄存器时&#xff0c;其中可能包含双精度数&#xff0c;那么需要4个寄存器合成双精度数。 之前的文章中介绍了labview的方法。 那么在c中…

FreeRTOS——事件组

学习目标 理解什么是事件组理解事件组标志位掌握事件组开发流程学习内容 概念 在FreeRTOS中,事件组(Event Group)是一种用于任务间同步和通信的机制。事件组允许任务等待和检测多个事件的状态,并在事件发生时进行通知。 事件组由一组标志位(或事件位)组成,每个标志位…

基于SSM的在线电影票购买系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的在线电影票购买系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

mysql基础-常用函数汇总

目录 1. 查询技巧 2. 时间函数 2.1 now() 2.2 current_date() 2.3 时间差timestampdiff&#xff08;&#xff09;与datediff&#xff08;&#xff09; 2.4 其他时间函数 3. 字符函数 3.1 截取函数 3.2 分割函数 3.3 left与right函数 3.4 其他函数 4. 数字函数 5. …

Java web设计:在线微友圈网站

项目背景 微友圈是一个基于Java Web开发的社交网络平台&#xff0c;旨在为用户提供一个轻松互动、分享生活和交流观点的在线社区。随着社交网络的普及&#xff0c;人们更加渴望与朋友、家人以及其他志同道合的人保持联系并分享彼此的生活点滴。微友圈的目标是打造一个简洁、高…

string的模拟实现

string的模拟实现 msvc和g下的string内存比较成员变量构造函数与析构函数拷贝构造函数赋值拷贝c_str、size和capacity函数以及重载[]、clear、expand_capacity迭代器与遍历reservepush_back、append、insert字符串比较运算符erase<<流提取 >>流插入resizefindsubst…

主从版本升级_主从_8.0.32_软链接_基于二进制日志文件

升级需求 将一套MySQL 8.0.32主从环境版本升级到8.0.35版本&#xff0c;主从环境如下&#xff1a; 主服务器 登录账号密码 端口 当前版本 目标版本 主服务器 59.217.250.226 root/topnet123 3306 8.0.32 8.0.35 从服务器 59.217.250.227 root/topnet123 3306 8…

RabbitMQ发布确认

1.单个确认 单个确认发布是一种同步确认发布方式&#xff0c;也就是发布一个消息后只有它被确认发布&#xff0c;后续的消息才能继续发布。 缺点:发布速度特别慢,因为若是没有确认发布的消息会阻塞所有后续消息的发布 package com.hong.rabbitmq5;import com.hong.utils.Rabb…

mac怎么拼图?Mac拼图技巧分享

mac怎么拼图&#xff1f;在Mac上拼图是一种令人愉悦的创意表达方式&#xff0c;可以让你将多张图片巧妙地融合在一起&#xff0c;创造出令人惊叹的艺术品。本文将向你介绍在Mac上进行拼图的几种方法&#xff0c;帮助你轻松实现这一目标。 一、使用Mac内置的预览功能进行拼图 M…

【python】os模块使用操作

os 模块是 Python 的标准库中提供的一个功能强大的模块&#xff0c;用于与操作系统进行交互。以下是 os 模块的一些常用方法&#xff1a; 获取当前工作目录: import os print(os.getcwd())改变当前工作目录: os.chdir(/path/to/new/directory)列出目录下的所有文件和子目录: pr…

Vue生命周期钩子函数详解

Vue.js的生命周期钩子函数是一些在组件实例化、挂载、更新和销毁期间被自动调用的函数。Vue 实例有一个完整的生命周期&#xff0c;从开始创建、初始化数据、编译模板、挂载DOM、渲染、更新、卸载等一系列过程&#xff0c;称之为 Vue 实例的生命周期。 常用的生命周期钩子函数…

freeRTOS总结(三)任务挂起和恢复

1&#xff0c;任务的挂起与恢复的API函数&#xff08;熟悉&#xff09; 任务挂起和恢复的区别 挂起还能被恢复&#xff0c;删除任务后无法恢复。 带FromISR后缀是在中断函数中专用的API函数 1.1任务挂起函数介绍 void vTaskSuspend(TaskHandle_t xTaskToSuspend) xTaskToSusp…