使用Java8 Streams汇总列表中各点之间的距离

MAG*_*Gx2 3 java java-8 java-stream

我有一个点(x,y)列表,我想总结它们之间的距离.在旧的 Java中,我会这样做:

List<Point> points = ...
long sum = 0;
for (int i = 0; i < points.size() - 1; i++) {
    sum += PointUtil.distance(points.get(i), points.get(i + 1));
}
return sum;
Run Code Online (Sandbox Code Playgroud)

现在的问题是:我可以使用相同的代码points.stream(). ...吗?

Era*_*ran 6

这是我能想到的第一件事:

sum = IntStream.range(0,points.size()-1)
               .mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
               .sum();
Run Code Online (Sandbox Code Playgroud)


Kon*_*kov 6

是.您可以使用IntStream,以便编制索引:

long sum = IntStream.range(0, points.size() - 1)
                    .mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
                    .sum();
Run Code Online (Sandbox Code Playgroud)