Сортировка двумерного массива по первому элементу вложенного массива - PullRequest
0 голосов
/ 13 марта 2012

У меня возникла проблема, из-за которой исходный 2D-массив после сортировки выводил в следующем формате:

[639.5, 134, -2]
[639.524, 131, -1]
[640.478, 179, -2]
[647.968, 192, -2]
[649.068, 199, -2]
[65.581, 3, -1]
[66.387, 6, -1]
[66.726, 7, -1]
[660.182, 194, -1]

, и я хотел бы отсортировать только по первому столбцу.Следовательно, мой ожидаемый результат должен быть таким:

[65.581, 3, -1]
[66.387, 6, -1]
[66.726, 7, -1]
[639.5, 134, -2]
[639.524, 131, -1]
[640.478, 179, -2]
[647.968, 192, -2]
[649.068, 199, -2]
[660.182, 194, -1]

Каким-то образом метод Collections.sort() сортирует список, как если бы он был String, поэтому «0» больше, чем «.», Не зная, что первыйстолбец состоит из двойных значений.Может ли кто-нибудь помочь мне в этом?Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Используйте метод Double.compare () .... Передайте это первое значение столбца в этом методе, он будет работать ...

Например:

В основном файле:

 Collection.sort(arraylist variable,new PositionComparator());

Другой класс:

public class PositionComparator implements Comparator ArrayList<ArrayList> {
    public int compare(ArrayList<ArrayList> o1, ArrayList<ArrayList> o2) {
        double val1, val2;
        val1 = Double.parseDouble(o1.get("your first value"));
        val2 = Double.parseDouble(o2.get("your second value"));
        return Double.compare(val1, val2);
    }
}

Надеюсь, это поможет ...

0 голосов
/ 13 марта 2012

Collection.sort упорядочивает список в естественном порядке, так что вы можете попробовать переопределить метод compareTo ()

...