jjzjj

summingInt

全部标签

java.util.stream.Collectors : Why is the summingInt implemented with an array?

标准收集器summingInt在内部创建一个长度为1的数组:publicstaticCollectorsummingInt(ToIntFunctionmapper){returnnewCollectorImpl(()->newint[1],(a,t)->{a[0]+=mapper.applyAsInt(t);},(a,b)->{a[0]+=b[0];returna;},a->a[0],CH_NOID);}我想知道是否可以只定义:privateCollectorsummingInt(ToIntFunctionmapper){returnCollector.of(()->0,(a,t)->

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

当您想对流中的整数值求和时,主要有两种方法:ToIntFunctionmapFunc=...intsum=stream().collect(Collectors.summingInt(mapFunc))intsum=stream().mapToInt(mapFunc).sum()第一个涉及对返回的整数进行装箱和拆箱,但第二个涉及一个额外的步骤。哪个更高效/更清晰? 最佳答案 您正在查看两个不同用例的交集。使用mapToInt(...)允许您在终端操作之前链接其他IntStream操作。相反,Collectors.summingInt

java - 使用 Collectors.summingInt 时如何获取自定义类型而不是 Integer?

我目前正在创建一个Map>像这样,其中Integer代表秒:Map>map=stream.collect(Collectors.groupingBy(x->x.getProject(),Collectors.groupingBy(x->x.getDate(),Collectors.summingInt(t->t.getDuration().toSecondOfDay()))));我怎样才能创建一个Map>? 最佳答案 要将Integer从Collectors.summingInt更改为Duration,您只需替换Collector与