Java 8Stream和阵列上的操作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

我刚刚发现了新的Java 8功能。来自Python,我想知道现在是否有一种简洁的方法来对数组进行操作,比如求和,以“一行pythonic”的方式乘以两个数组?

谢谢

提问于
用户回答回答于

您可以使用以下命令将数换为Arrays.stream()

int[] ns = new int[] {1,2,3,4,5};
Arrays.stream(ns);

一旦你有了你的stream,你可以使用文档中描述的任何方法,比如sum()或其他。你可以mapfilter通过调用lambda函数,相关数据流的方法在Python这样的:

Arrays.stream(ns).map(n -> n * 2);
Arrays.stream(ns).filter(n -> n % 4 == 0);

一旦你完成了你的流的修改,你就可以调用toArray()它来将它转换回一个数组来在其他地方使用:

int[] ns = new int[] {1,2,3,4,5};
int[] ms = Arrays.stream(ns).map(n -> n * 2).filter(n -> n % 4 == 0).toArray();
用户回答回答于

添加到java.util.Arrays将数组转换为Java 8 stream

,然后可用于求和等。

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

将两个数组相乘有点困难,因为我想不出在获得值和索引的同时获得一个Stream操作的方法。这意味着您可能必须遍历数组的索引。

扫码关注云+社区

领取腾讯云代金券