gpt4 book ai didi

java - Collectors.summingInt() 与 mapToInt().sum()

转载 作者:太空狗 更新时间:2023-10-29 22:34:48 25 4
gpt4 key购买 nike

当您想对流中的整数值求和时,主要有两种方法:

ToIntFunction<...> mapFunc = ...
int sum = stream().collect(Collectors.summingInt(mapFunc))

int sum = stream().mapToInt(mapFunc).sum()

第一个涉及对返回的整数进行装箱和拆箱,但第二个涉及一个额外的步骤。

哪个更高效/更清晰?

最佳答案

您正在查看两个不同用例的交集。使用 mapToInt(...) 允许您在终端操作之前链接其他 IntStream 操作。相反,Collectors.summingInt(...) 可以与其他收集器结合使用,例如在 groupingBy 收集器中用作下游收集器。对于这些用例,使用哪个是毫无疑问的。

在您的特殊情况下,当您首先不链接更多操作或处理收集器时,这两种方法之间没有根本区别。不过,使用更具可读性的代码还是有一定意义的。通常,当流上有预定义的操作执行相同操作时,您不使用收集器。当您可以只使用 .reduce(...) 时,您不会使用 collect(Collectors.reducing(...)),对吗?

不仅 mapToInt(mapFunc).sum() 变短了,它还遵循通常的从左到右的顺序来理解概念上发生的事情,首先转换为 int,然后将这些 int 相加。我认为这证明了比 .collect(Collectors.summingInt(mapFunc)) 更喜欢这个替代方案。

关于java - Collectors.summingInt() 与 mapToInt().sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37023822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com