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
Advertisement
Answer
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);