欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 案例分析:遍历map 内部元素相加

案例分析:遍历map 内部元素相加

2025/2/22 2:19:06 来源:https://blog.csdn.net/ahauedu/article/details/142187712  浏览:    关键词:案例分析:遍历map 内部元素相加

案例分析:遍历map 内部元素相加

20240912 写在前面:造轮子 有什么不好呢?我造了轮子,你造了发动机,他造了车身铁皮,我们组装一下就可以上路了,不是吗?走,开路!

问题:

最近开发中遇到一个问题,就是多设备 Long 对应了一组数据 Double[],Double[]又是个多列数组,但是列数相同。期望是将Double[]相同列的值求和合并,并输出一个 求和后的Double[]

简单的说就是:

遍历Map<Long, Double[]> devPowerMap 将其中的double[]相同索引的相加 输出一个新的Double。

…大家先思考一下…试试自己有咩有答案。

one ti

程序员暑假作业课后答案[狗头]:

我们的目的是遍历 Map<Long, Double[]>,并将其中每个 double[] 的相同索引的值相加,那么可以通过以下步骤实现:

  1. 初始化一个结果数组,长度与 Double[] 相同,用来存储每个索引的总和。
  2. 遍历 Map<Long, Double[]> 中的每个 Double[],将相同索引的值进行相加。
  3. 输出总和的结果数组

实现代码:

package com.javastudy.springboot3framework.myapp.tools;import java.util.HashMap;
import java.util.Map;/*** @author zhizhou   2024/9/12 22:45*/
public class SumMapValues {public static void main(String[] args) {// 初始化Map<Long, Double[]>Map<Long, Double[]> devPowerMap = new HashMap<>();devPowerMap.put(1L, new Double[]{1.0, 2.0, 3.0, 4.0, 5.0});devPowerMap.put(2L, new Double[]{6.0, 7.0, 8.0, 9.0, 10.0});devPowerMap.put(3L, new Double[]{11.0, 12.0, 13.0, 14.0, 15.0});// 假设所有 Double[] 的长度相同,初始化一个总和数组int length = devPowerMap.values().iterator().next().length; // 获取数组长度Double[] totalSums = new Double[length];// 初始化 totalSums 数组为0for (int i = 0; i < length; i++) {totalSums[i] = 0.0;}// 遍历 Map,累加相同索引的值for (Map.Entry<Long, Double[]> entry : devPowerMap.entrySet()) {Double[] values = entry.getValue();for (int i = 0; i < values.length; i++) {totalSums[i] += values[i];}}// 输出每个索引相加后的总和System.out.println("每个索引值的和:");for (int i = 0; i < totalSums.length; i++) {System.out.println("索引 " + i + " 对应值之和: " + totalSums[i]);}}
}

代码说明:

  1. devPowerMap:一个 Map<Long, Double[]>,键为设备ID,值为 Double[]
  2. totalSums:一个数组,用来存储相同索引位置的累加结果。它的长度是从 Map 中取的第一个 Double[] 的长度。
  3. 遍历逻辑
    • 遍历 Map 中的每个 Double[],将其相同索引的值累加到 totalSums 中。
    • 输出累加结果。

输出结果:

假设 devPowerMap 包含如下数据:

devPowerMap.put(1L, new Double[]{1.0, 2.0, 3.0, 4.0, 5.0});
devPowerMap.put(2L, new Double[]{6.0, 7.0, 8.0, 9.0, 10.0});
devPowerMap.put(3L, new Double[]{11.0, 12.0, 13.0, 14.0, 15.0});

则输出结果为:

每个索引值的和:
索引 0 对应值之和: 18.0
索引 1 对应值之和: 21.0
索引 2 对应值之和: 24.0
索引 3 对应值之和: 27.0
索引 4 对应值之和: 30.0

这个方案可以高效地遍历 Map<Long, Double[]> 并对每个索引的值进行相加。目前这个问题是解决了,那我们再扩展一下,相同索引求和是一种场景。

  • 那假如 Double[]中每2个一组再求和呢?
  • 要是 直接求总和呢?

大家可以思考一下,试试看~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词