2012-03-13 4 views
0

Я имею вопрос при этом оригинальный 2D ArrayList, после сортировки, выходы в следующем формате:Сортировка 2D ArrayList на основе первого элемента вложенной ArrayList

[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» больше, чем, не зная, что первый столбец состоит из «» двойных значений. Может ли кто-нибудь помочь мне в этом? Благодаря!

+0

Можем ли мы увидеть код, который вы используете, чтобы отсортировать эти данные? это поможет. Может быть, в [pastebin] (http://www.pastebin.com)? –

+0

Это оригинальный несортированный 2D-анализатор: http://pastebin.com/aUaHaNdL Обратите внимание, что каждая строка является элементом в родительском массиве. и каждая строка имеет arraylist из 3 элементов. вот как мы получаем 2D-арраист. Я закончил с этим после использования Collections.sort ... http://pastebin.com/PaxjQQS2, я делаю это в java. –

+0

Я больше искал код, в котором вы создаете, изменяете и сортируете список, но это полезно. : P Скорее всего, вам придется создать свою собственную функцию сортировки. [Вот сообщение в блоге, в котором кто-то делает то, что вы хотите.] (Http://publicmind.in/blog/sorting-2d-array-java/) –

ответ

2

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

Например:

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

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

Я не уверен, что вы имеете в виду ... –

+0

См. Отредактированный код ... –

+0

Я очень идиот, когда дело доходит до hashmap и прочее, не могли бы вы взглянуть на мой код здесь? нижний метод - это то, где я собираюсь сортировать. Я удалил там свои неработающие коды. http://pastebin.com/zpp1Zw1G –

0

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

+0

Да, я читал это где-то. Я не уверен, как чтобы делать то, что вы предложили. :(Я могу сделать это легко в excel, но я предпочел бы, чтобы вся программа была запущена в java без необходимости перепродать в Excel. –

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