【发布时间】:2014-08-12 10:59:22
【问题描述】:
我有 List<Vector3D> ,其中 Vector3D 是一个坐标。我想找到列表中Vector3D 元素之间所有距离的总和。我想使用 java 8 流找到它。我尝试使用reduce,但它无法帮助我。
UPD:
类Vector3D 有方法double distance(Vector3D) 女巫找到两个位置之间的距离。例如我有(1,0,0)(2,0,0)(3,0,0)的列表。结果,我想找到这条路径的长度。现在是 3。
如果我们使用的是 java 7 或更低版本,我们必须这样做:
public static double calcPathLength(List<Vector3D> path){
double length = 0d;
for (int i=0; i< path.size()-1; i++){
length += path.get(i).distance(path.get(i+1));
}
return length;
}
【问题讨论】:
-
当我假设正确时,您需要一对向量来计算它们的距离,您可能不直接使用 reduce,因为它适用于每个元素,但您可以计算距离列表然后减少此列表为单个结果。
-
如何使用 java 8 流计算距离列表?
-
点
(1,0,0) (2,0,0) (3,0,0)之间的路径是直线,所以它的长度不应该是2而不是3吗? -
恐怕流在这里没有更大的用处,因为您需要一个特殊的流为您提供两个后续元素而不是单独的当前元素 - 所以计算距离将与
-
这需要
Collector。
标签: java collections java-8 java-stream