2016-11-30 6 views
1

У меня есть ArrayList<ArrayList<Integer>>, и я хочу, чтобы отсортировать так я буду иметь все списки в лексикографическом порядке.ArrayList из ArrayList целых чисел в лексикографическом порядке в Java

Например:

В списке перед сортировкой (запятая отделить один список от другого): 2 6 8, 1 3 6, 1 2 8

Что я хочу получить после сортировки: 1 2 8 , 1 3 6, 2 6 8

Я видел, что я могу использовать Collections.sort, но видел его только для сравнения значения в одном индексе только:

Collections.sort(lists, new Comparator<ArrayList<Integer>>(){ 
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){ 
     return list1.get(0).compareTo(list2.get(0)); 
    } 
}); 

но что мой результат будет неправильно (1 3 6, 1 2 8, 2 6 8).

Можно ли использовать что-то вроде этой структуры, чтобы сравнить не одно значение, но все они в списках? Все списки имеют одинаковый размер.

ответ

2

Просто перебирать обеих коллекций в Comparator: (Это не проверяет такой же длины, вы можете добавить его)

Collections.sort(lists, new Comparator<ArrayList<Integer>>(){ 
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){ 
     int result = 0; 
     for (int i = 0; i <= list1.size() - 1 && result == 0; i++) 
     { 
      result = list1.get(i).compareTo(list2.get(i)); 
     } 
     return result; 
    } 
}); 
+0

Благодарим вас за ответ и исправление моей орфографии. :) – Halep

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