我有一个点(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;
现在问题是:我可以使用points.stream(). ...
执行相同的代码吗?
答案 0 :(得分:6)
这是我能想到的第一件事:
sum = IntStream.range(0,points.size()-1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();
答案 1 :(得分:6)
是。您可以使用IntStream
进行索引编制:
long sum = IntStream.range(0, points.size() - 1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();