使用流汇总列表

时间:2017-11-15 04:41:06

标签: java java-stream

以下数据 -

int[] array = {56,67,78,89,90,12,23};
List<Integer> list= new ArrayList<Integer>(Arrays.asList(array));

为什么下面有区别:

int sum1 = Arrays.stream(array).sum();

int sum2 = list.stream().mapToInt(Integer::intValue).sum();

如果没有额外转换,为什么第二个选项不能list.stream().sum()

1 个答案:

答案 0 :(得分:-1)

困惑的部分在这里,因为
Arrays.stream(array)和list.stream()没有产生相同的结果..那些返回实际上完全不同的流。

答案很长:

当你这样做时:

Arrays.stream(array)你得到的IntStream基本上是一个整数流,因此对象有一个方法sum(),可以让你对其所有元素进行累加。< / p>

但并非T的每个流都允许连接Ts,因此该方法在普通流中不可用,一个选项是将流传递给将这些流转换为新流的函数...这就是mapToInt所做的。