给定一个整数列表:列表
为什么我不能像这样求和:
numbers.stream(). sum();
?
相反,我必须这样做:
numbers.stream().mapToInt(e -
我知道
mapToInt
会产生一个IntStream
,即原始的特化。但我仍然不明白。为什么它不能对整数求和?我知道这个列表有整数,编译器应该能够做同样的事情。毕竟,它现在可以推断 lambda 表达式中的类型参数。
好的,一个整数可能为空,sum会失败。但是我可以对此负责,过滤掉空值:
numbers.stream().filter(Objects::nonNull.sum()
为什么我不能和整数流?
流
匿名用户
在列表
上调用流()
,将得到一个通用的数据流
,它可以处理任何引用类型,而不仅仅是数字类型。在流
中包含求和
方法是没有意义的,因为求URL
s、类
es、Thread
s或任何其他非数字引用类型的和都没有意义。
您可以通过调用< code>reduce对元素求和:
numbers.stream().reduce(0, (a, b) -> a + b)
但是这将涉及大量的拆箱和装箱。最好是对它们求和,方法是将其转换为< code>IntStream,对< code>int进行操作,并调用< code>sum()(或< code>summaryStatistics(),其中包括count、average、max和min以及sum)。
您甚至可以使用IntStream.of
,并避免将值装箱一次。
IntStream.of(1, 2, 3).sum()
我有一个db2查询,今天我意识到需要扩展该查询。 我的表使用联接已经相当复杂了,所以我并不想添加联合查询。我想做一个完整的外部连接。 我想是因为另一个左联接。
我从课本上抄了一个例子,但它拒绝编译。我是不是在什么地方打错了?出于某种原因,在客户端代码中,collections.sort(words)不允许程序编译。任何帮助都很感激。代码复制自Stuart Reges和Marty Stepp的“构建Java程序”第二版。我正试图通过复制来理解它。 该程序应该将一个CalendarDate对象装入一个ArrayList中。通过实现CalendarDate的可
问题内容: 在Java 8中,有一个新方法可返回代表字符代码的)流。我想很多人会期待这里有s 流。这样设计API的动机是什么? 问题答案: 正如其他人已经提到的那样,其背后的设计决策是防止方法和类的爆炸式增长。 尽管如此,我个人还是认为这是一个非常糟糕的决定,并且鉴于他们不想做出合理的替代方法,我应该考虑: ,它会提供一系列字符,这会降低性能。 ,该代码将用于性能代码。 但是,我认为,这个答案应该
问题内容: 在Java中,hashcode()方法返回整数而不是long。有什么具体原因吗? 问题答案: 那么,一个良好的理由是,基于数据结构(,)使用一个数组来存储箱,并且阵列被限制为索引。 如果必须将其映射到数组索引,那么您将一无所获。
尽管有值,但我不能得到一个用户的值的和时间。 即使用户17有工作时间值,我也会在sumTW列中得到该用户的NULL值。我该怎么解决? 这就是我的查询看起来的样子: 下面是表格代码: (这个表和原来的不一样,原来的有外键。我去掉它们只是为了能够再现同样的问题,同样的问题被报告了)。