当前位置: 首页 > 面试题库 >

Java 8流和对数组的操作

申屠项明
2023-03-14
问题内容

我刚刚发现了新的Java8流功能。来自Python,我想知道现在是否有一种巧妙的方法可以对数组进行操作,例如求和,以“单行pythonic”的方式将两个数组相乘?

谢谢


问题答案:

添加了新的方法java.util.Arrays来将数组转换为Java 8流,然后将其用于求和等。

int sum =  Arrays.stream(myIntArray)
                 .sum();

将两个数组相乘会有点困难,因为我想不出一种与Stream操作同时获取值和索引的方法。这意味着您可能必须流式处理数组的索引。

//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...

int[] result = new int[a.length];

IntStream.range(0, a.length)
         .forEach(i -> result[i] = a[i] * b[i]);

编辑

批评家@Holge指出,你可以使用map方法,而不是forEach像这样:

int[] result = IntStream.range(0, a.length).map(i -> a[i] * b[i]).toArray();


 类似资料:
  • 我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。

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

  • 给java类一些东西 我有一张物品清单 我希望能够对它们进行排序,这样它们就可以按照每个父对象的虚数的累积和排序,然后再按照虚数排序。 所以我最终 我知道用parentKey和sum of noThings映射它是 我想,也许包装我的Something类并获得每个父项的总密钥可能会在某种程度上起作用。 但看起来工作量很大,不太优雅。 如有任何意见/想法,将不胜感激。

  • 我有一个对象列表,如下所示,我想将它们按3个属性分组,并将第4个属性相加 我做了如下类似的事情,但它生成了许多地图,我无法得到求和的方法,因为它也需要一些逻辑 如何使用和逻辑获取分组列表列表?

  • 给你一个整数列表,长度为偶数。考虑这样一个操作,您在nums中选择任意数字,并用[1,max(nums)]之间的值更新它。返回所需的操作数,使得对于每个i,nums[i]+nums[n-1-i]等于相同的数。问题可以贪婪地解决。 注意:n是数组的大小,max(nums)是nums中的最大元素。 null 设i=0,nums[0]+nums[6-1-0]=4。 i=1,nums[1]+nums[6-