当前位置: 首页 > 知识库问答 >
问题:

在Java8中从整数数组减少到双数组

有玄天
2023-03-14
// assuming HashMap<String, Integer> hashmap
double sum = hashmap.values().stream()
    .reduce(.0, (i, v) -> i + Math.pow(v,2) + 0.5 );
- The method reduce(Integer, BinaryOperator<Integer>) in the type Stream<Integer> is not applicable for the arguments (double, (<no type> i, <no type> v) -> {})

- Type mismatch: cannot convert from double to Integer

但是,此修复:

// assuming HashMap<String, Integer> hashmap
double sum = hashmap.values().stream()
    .map((t)->(double)t)
    .reduce(.0, (i, v) -> i + Math.pow(v,2) + 0.5 );

有没有更优雅的方式这样做?

共有1个答案

陆仲渊
2023-03-14

您只是想求和v*v+0.5的值吗?

如果是这样,最清楚的解决方案是

double sum = 0;
for (int v : hashmap.values())
    sum += v * v + 0.5;

如果必须使用流,答案是

double sum = hashmap.values().stream().mapToDouble((v) -> v * v + 0.5).sum();
 类似资料:
  • 我想分别找到数组数组中每个数组的第一个和第二个元素的最大数量: 当前方式返回每个数组中最大数的数组。如何返回第一个元素中最大的元素和第二个元素中最大的元素?预期结果将是:

  • 问题内容: 说我想对中的每个元素求和。 我有理由相信,斧头在某些时候是不确定的。 以下工作正常 我在第一个示例中做错了什么? 问题答案: 第一次迭代后,您将返回一个数字,然后尝试获取该数字的属性以将其添加到下一个对象中,该对象是和数学,其中涉及结果。 尝试返回一个对象,该对象包含一个属性,该属性与参数的x个属性之和: 从注释中添加了说明: 每次迭代的返回值在下一次迭代中用作变量。 迭代1: ,,

  • 我是Java8的新手,不能使用流将一个数组映射到另一个二维数组。 和包含键的第二个数组。 0表示:从模式中取0元素 1表示:从模式中取1元素,以此类推 从这两个数组中,我想生成另一个二维数组。在这种情况下,结果如下所示: 请帮忙

  • 是否有更好的方法将转换为?

  • 我正在写一个简单的井字游戏,需要在轮到他们的时候接受用户输入。玩家应该简单地提供一组坐标来放置他们的令牌(1,1)到(3,3)。我应该能够接受输入为“2 1”或“2,1”或“2,1”。所以我需要能够获取他们的字符串输入并提取两个数字中的每一个,而不管分隔符如何,并使用它们将他们的令牌分配给3x3数组中的指定单元格。 主要的问题是只能利用我们已经学过的东西(这是Java的第一节)。这是构建Java程