为什么 java stream.count() 返回 long?

2022-09-01 06:41:05

为什么 stream.count() 不返回 ?int

我知道我可以很容易地将 转换为通过铸造,longint

return (int) players.stream().filter(Player::isActive).count();

但是为什么java会返回a而不是?stream.count()longint


答案 1

当Java在1996年初问世时,普通PC有8到16 Mb的内存。由于数组和集合都与内存大小密切相关,因此用于表示元素计数似乎是很自然的,因为它足以处理大小为4Gb的数组 - 即使在1996年的硬盘驱动器中,这个大小也很大,更不用说RAM了。因此,使用而不是集合大小在当时似乎是浪费。intintlongint

尽管大小有时可能是一个限制因素,但 Java 设计人员无法将其更改为 ,因为这将是一个重大更改。intlong

与 Java 集合不同,流可能具有无限数量的元素,并且它们不考虑兼容性问题。因此,使用其更广泛的值范围似乎是一个非常合理的选择。long


答案 2

好吧,仅仅因为它是java具有的最大64位基元值。另一种方法是个计数:

countLong/countInt

这看起来真的很奇怪。

int适合 ,但不适合反之亦然。任何你想用int做的事都可以放在一个很长的地方,那么为什么需要同时提供两者呢?long


推荐