首页 > 解决方案 > 使用 IntStream.range 的部分列表的 Java 总和嵌套属性

问题描述

我有这个基本代码(列表的大小大于 2)。

int delayedSamples = 0;
for (int i = 0; i < list.size() - 2; i++) {
  delayedSamples += list.get(i).getChunk().length / size;
}

是否可以用 替换之前的代码IntStream.range?像:

int delayedSamples = IntStream
    .range(0, list.size() - 1)
    .mapToObj(i -> list.get(i).getChunk().length / size).... ??

有 lambda 替代品吗?

标签: javalambdajava-8sumjava-stream

解决方案


您可以使用:

int delayedSamples = list.stream()
                         .map(item -> item.getChunk())
                         .limit(list.size() - 2)
                         .collect(Collectors.summingInt(chunk -> chunk.length / size));

推荐阅读