2016-04-29 8 views
0

Я пытаюсь сортировать 2-й Arraylist на основе 1-го элемента и при сравнении, если оба элемента одинаковы, сортируйте их по 2-му элементу.Сортировка 2d arraylist на основе двух элементов

Так что мой Список_массивов выглядит

[[1, 4, 0], [2, 5, 2], [3, 5, 3], [4, 3, 6]]

и я хочу тоже выглядеть так

[[4, 3, 6], [1, 4, 0], [2, 5, 2], [3, 5, 3]]

Это мой ArrayList

ArrayList<ArrayList<Integer>> processes = new ArrayList<>(); 

Это то, что я до сих пор с помощью выбор сортировка

int smallInt; 
int j; 
int smallIntIndex; 
for(int i = 1; i<=processes.size();i++){ 
    smallInt = processes.get(i-1).get(1); 
    smallIntIndex = i-1; 
    for(j=i;j<processes.size();j++){ 
     if(processes.get(j).get(1)==smallInt){ 
      //not exactly sure what goes in here 
     }else if(processes.get(j).get(1)<smallInt){ 
      smallInt = processes.get(j).get(1); 
      smallIntIndex = j; 
     } 
    } 
    ArrayList<Integer> temp = processes.get(smallIntIndex); 
    processes.set(smallIntIndex,processes.get(i-1)); 
    processes.set(i-1,temp); 
} 
+0

Как '[[4, 3, 6], [1, 4, 0], [2, 5, 2], [3, 5, 3]]' отсортированы? – robotlos

+0

Сортируется на основе 1-го элемента (1-й индекс списка вложенных массивов). –

+0

Как насчет использования функций сортировки buiilt-in, таких как 'process.sort ((firstElement, secondElement) -> Integer.compare (firstElement.get (1), secondElement.get (1));' – Palle

ответ

0

Являются ли этикетки (например, 1 или 2 или 3 - первая/вторая/третья запись) из ограниченного набора (например, только цифры)? Если это так (как мне кажется), вы можете отсортировать их, применив Radix sort.

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