【问题标题】:.indexOf giving wrong index.indexOf 给出错误的索引
【发布时间】:2014-02-10 11:40:06
【问题描述】:

我在 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] 位于距离数组中,为什么它会返回正确的索引?

我最好的猜测是它与asList 没有正确转换我的双打有关,如果是这样,我该如何纠正它

编辑

Distances 是一个双精度数组,distancesSort 是已排序数组的副本

【问题讨论】:

  • 如果您提供一个完整的示例(即填充的数组)会更容易。
  • distances 是基元数组吗?将distances 设为Double[]
  • 你的数组是什么?

标签: java arrays list indexing


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多