【发布时间】:2017-07-30 05:53:00
【问题描述】:
我很难找到按ArrayList<Integer> 中的第三个元素对ArrayList<ArrayList<Integer>> 进行排序的方法。例如,给定
ArrayList<ArrayList<Integer>> = [[5,4,0],[3,2,1],[3,3,3],[2,2,2]]
我想对它进行排序,使ArrayList<Integer>s 按第三个元素升序排列,给出输出:
ArrayList<ArrayList<Integer>> = [[5,4,0],[3,2,1],[2,2,2],[3,3,3]]
我之前使用Collections 对 ArrayList 进行排序,但这个有点棘手。
下面的 java 代码也可能有助于理解我遇到的问题。
public static void main(String[] args){
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
Random rand = new Random();
for(int i=0; i<3; i++){
ArrayList<Integer> components = new ArrayList<Integer>();
components.addAll(Arrays.asList(rand.nextInt(10),rand.nextInt(10),rand.nextInt(10)));
list.add(components);
}
System.out.println(list);
sort(list);
}
public static void sort(ArrayList<ArrayList<Integer>> list){
for(int i=0; i<list.size(); i++){
//Here is where I want to sort the list by the element retrieved from the println below
System.out.println(list.get(i).get(2));
}
}
感谢任何帮助。感谢您的宝贵时间。
【问题讨论】:
-
第三个元素是独一无二的吗?或者他们可能会重复?
-
它们不是唯一的,可能有多个
-
list.sort(Comparator.comparing(l -> l.get(2))); -
谢谢 shmosel 按预期工作