I am looking to sort an arraylist of arraylist of integers and I require help?
I was informed that I need to implement comparator or comparable and then use the collection.sort to sort the list of list in order...
ArrayList<ArrayList<Integer>> g = new ArrayList<ArrayList<Integer>>()
If you look at the list of list as the following example:
C1 – 5,4,10
C2 – 3,2,1
C3 – 7,8,6
First it will be sorted like this:
C1 – 4,5,10
C2 – 1,2,3
C3 – 6,7,8
Then it will be sorted like this
C1 – 1,2,3
C2 – 4,5,6
C3 – 7,8,10
No error check for null lists, but here it is.
List<List<Integer>> list = Arrays.asList(Arrays.asList(10, 5, 4),
Arrays.asList(3, 2, 1), Arrays.asList(7, 8, 6));
for (List<Integer> l : list) {
Collections.sort(l);
}
Collections.sort(list, new Comparator<List<Integer>>() {
public int compare(List<Integer> o1, List<Integer> o2) {
return o1.get(0).compareTo(o2.get(0));
}
});
System.out.println(list);
With Java 8 it gets even more concise:
List<List<Integer>> list = Arrays.asList(Arrays.asList(10, 5, 4),
Arrays.asList(3, 2, 1), Arrays.asList(7, 8, 6));
list.forEach(Collections::sort);
Collections.sort(list, (l1, l2) -> l1.get(0).compareTo(l2.get(0)));
System.out.println(list);
You could just sort each list individually. The Collections.sort(collection)
will sort the Integers in ascending order automatically.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With