以下数据 -
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()
?
答案 0 :(得分:-1)
答案很长:
当你这样做时:
Arrays.stream(array)
你得到的IntStream
基本上是一个整数流,因此对象有一个方法sum()
,可以让你对其所有元素进行累加。< / p>
但并非T的每个流都允许连接Ts,因此该方法在普通流中不可用,一个选项是将流传递给将这些流转换为新流的函数...这就是mapToInt所做的。