我在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是已排序数组的副本

最佳答案

如果distancesdouble[],则Arrays.asList(distances)将创建一个包含一个元素的List<double[]>,而不是包含原始数组中所有数字的List<Double>。要创建List<Double>,您需要迭代:

List<Double> list = new ArrayList<>();
for (double d : distances) list.add(d);


然后,您可以调用list.indexOf(someDouble),它将返回您期望的结果。

07-27 21:14