2014-02-10 8 views
0

У меня есть следующие строки кода в стороне для цикла:.indexOf дает неправильный индекс

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] находится в массиве расстояний, поэтому почему dosent возвращает правильный индекс?

Моя догадка его делать с asList не преобразовывать мои двойники правильно, если да, то как я могу исправить это

EDIT

Расстояния массив двойников и distancesSort является копией массив, который сортируется

+0

Было бы проще, если бы вы предоставили полный пример (т. Е. Заполненный массив). – assylias

+0

Является ли 'distances' массивом примитивов? Сделайте 'distances'' Double [] '. –

+0

Ваше имя: Ваш адрес: –

ответ

2

Если distances является double[], то Arrays.asList(distances) собирается создать List<double[]>, содержащие один элемент, в отличие от List<Double>, содержащего все--х e номеров в исходном массиве. Для создания List<Double> вам нужно перебирать:

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

Вы можете позвонить list.indexOf(someDouble), и он вернется, что вы ожидаете.

Смежные вопросы