我在for循环中有以下代码行:
double[] distancesSort = Arrays.copyOf(distances, distances.length);
positions[i]=Arrays.asList(distances).indexOf(distancesSort[i]);
独立功能:
distances = new double[dataScaled.size()];
distances[i]= Math.sqrt(runningTotal);
问题是数组位置全部用-1填充
我肯定知道distancesSort [i]在distances数组中,那么为什么不将其返回正确的索引呢?
我最好的猜测是与
asList
不能正确转换我的双打有关,如果可以的话我该如何纠正编辑
Distances是双精度数组和distancesSort是已排序数组的副本
最佳答案
如果distances
是double[]
,则Arrays.asList(distances)
将创建一个包含一个元素的List<double[]>
,而不是包含原始数组中所有数字的List<Double>
。要创建List<Double>
,您需要迭代:
List<Double> list = new ArrayList<>();
for (double d : distances) list.add(d);
然后,您可以调用
list.indexOf(someDouble)
,它将返回您期望的结果。