为什么 java stream.count() 返回 long?
2022-09-01 06:41:05
为什么 stream.count()
不返回 ?int
我知道我可以很容易地将 转换为通过铸造,long
int
return (int) players.stream().filter(Player::isActive).count();
但是为什么java会返回a而不是?stream.count()
long
int
为什么 stream.count()
不返回 ?int
我知道我可以很容易地将 转换为通过铸造,long
int
return (int) players.stream().filter(Player::isActive).count();
但是为什么java会返回a而不是?stream.count()
long
int
当Java在1996年初问世时,普通PC有8到16 Mb的内存。由于数组和集合都与内存大小密切相关,因此用于表示元素计数似乎是很自然的,因为它足以处理大小为4Gb的数组 - 即使在1996年的硬盘驱动器中,这个大小也很大,更不用说RAM了。因此,使用而不是集合大小在当时似乎是浪费。int
int
long
int
尽管大小有时可能是一个限制因素,但 Java 设计人员无法将其更改为 ,因为这将是一个重大更改。int
long
与 Java 集合不同,流可能具有无限数量的元素,并且它们不考虑兼容性问题。因此,使用其更广泛的值范围似乎是一个非常合理的选择。long
好吧,仅仅因为它是java具有的最大64位基元值。另一种方法是两个计数:
countLong/countInt
这看起来真的很奇怪。
int
适合 ,但不适合反之亦然。任何你想用int做的事都可以放在一个很长的地方,那么为什么需要同时提供两者呢?long