我在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的
我肯定知道distanceSort [i]在距离数组中,为什么它会返回正确的索引呢?
我最好的猜测是asList
没有正确转换我的双打,如果是这样,我该如何纠正呢
修改
距离是一个双精度数组和distanceSort是一个排序的数组的副本
答案 0 :(得分:2)
如果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)
,它会返回您的期望。