使用 Java8 流对列表中的点之间的距离求和
Sum distances between points in list using Java8 Streams
我有一个点列表 (x,y),我想求和它们之间的距离。在 old 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(). ...
做同样的代码吗?
这是我首先想到的:
sum = IntStream.range(0,points.size()-1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();
是的。您可以使用 IntStream
,以便建立索引:
long sum = IntStream.range(0, points.size() - 1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();
我有一个点列表 (x,y),我想求和它们之间的距离。在 old 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(). ...
做同样的代码吗?
这是我首先想到的:
sum = IntStream.range(0,points.size()-1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();
是的。您可以使用 IntStream
,以便建立索引:
long sum = IntStream.range(0, points.size() - 1)
.mapToLong(i -> PointUtil.distance(points.get(i), points.get(i + 1)))
.sum();