.indexOf给出错误的索引

时间:2014-02-10 11:40:06

标签: java arrays list indexing

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

1 个答案:

答案 0 :(得分:2)

如果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),它会返回您的期望。