当前位置: 首页 > 知识库问答 >
问题:

为什么收藏家会这么做。把“减少”计算成“长”吗?

呼延明朗
2023-03-14

从…起https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#counting--:

public static <T> Collector<T,?,Long> counting()

返回一个采集器接受类型为T的元素,该采集器统计输入元素的数量。如果不存在任何元素,则结果为0。

实施要求:

这将产生相当于以下结果:

reducing(0L, e -> 1L, Long::sum)

为什么这个收藏家收集成一个长的?是因为它可以在各种平台上进行优化,其中typedefsize_tuint64_t?还是我错过了什么?具有超过整数的Stream有实际用途吗?MAX_VALUE项?

共有1个答案

邢高澹
2023-03-14

如果元素数大于整数。MAX值然后相加将包裹在int max值上,这将使总和值(元素数)出错。

如果结果涉及元素的添加,我们通常会用long编写结果。

简而言之,提供了长返回类型以支持所有情况(元素数小于Integer.MAX和大于Integer.MAX)。

 类似资料:
  • 我目前正在读O'reilly的《Java 8 Lambdas》是一本非常好的书。我遇到了这样一个例子。 我有一个 这会产生正确的输出。 我的问题是将reduce方法视为最后一个参数,即二进制运算符 我的问题是这个参数用于哪个?如果我改变 如果我传递NULL,则输出相同,然后返回N.P.E。 for此参数用于什么? 更新 为什么如果我在上运行它,我会收到不同的结果? 第一次运行。 第二次运行 第三次

  • 如果你知道为什么会这样,为什么还会这样,请告诉我,这是我的代码:

  • 我试图解决Rosalind的一个基本问题,计算给定序列中的核苷酸,并返回列表中的结果。对于那些不熟悉生物信息学的人来说,这只是计算字符串中4个不同字符('A'、'C'、'G'、'T')的出现次数。 我认为是最快的方法(首先是因为它们声称具有高性能,其次是因为我看到很多人使用它来解决这个特定问题)。 但令我惊讶的是,这种方法是最慢的! 我比较了三种不同的方法,使用并运行两种类型的实验: 多次运行长序

  • 当G1决定需要开始进行混合收集时,它会积极地将我们的伊甸园空间从10g缩小到1g左右。 这是在它与10-11克伊甸园一起运行了60个或更多系列之后。 下面是我们运行时使用的适当的JVM GC参数 根据本演示文稿的第55页,它需要调整Eden的大小,以便最大暂停目标占整个堆,而不仅仅是新一代。为什么收集器如此激进? 对于10g大小的堆,年轻一代的平均暂停时间在50-150ms之间。如果演示是正确的(

  • 问题内容: 为什么在代码的指定位置出现ConcurrentModificationException?我无法弄清楚自己在做什么错… 正在使用该方法在列表中找到分钟,将其删除并返回其值 问题答案: 一旦修改了从其获得的Collection,则不应认为Iterator可用。(对于java.util.concurrent。*集合类,放宽了此限制。) 您首先要获得一个Iterator ,然后进行修改。修改

  • 我在Pytorch中用LSTM-线性模块构建了一个分类问题(10个类)的模型。我正在训练模型,对于每个时代,我在训练集中输出损失和准确性。产出如下: 纪元:0开始 损失:2.301875352859497 会计科目:0.1138888889 时代:1开始<损失:2.2759320735931396 会计科目:0.29 时代:2开始<损失:2.2510263919830322 会计科目:0.4872