Java 对ArrayList进行排序<;ArrayList<;整数>&燃气轮机;通过ArrayList中的第三个元素<;整数>;
我很难找到按Java 对ArrayList进行排序<;ArrayList<;整数>&燃气轮机;通过ArrayList中的第三个元素<;整数>;,java,sorting,arraylist,Java,Sorting,Arraylist,我很难找到按ArrayList中的第三个元素对ArrayList排序的方法。例如,给定 ArrayList=[[5,4,0],[3,2,1],[3,3,3],[2,2,2]] 我想对它进行排序,这样,ArrayLists按给出输出的第三个元素的升序排列: ArrayList=[[5,4,0]、[3,2,1]、[2,2,2]、[3,3,3]] 我以前使用过Collections对ArrayList进行排序,但这一个有点棘手 下面的java代码也可能有助于理解我遇到的问题 public static
ArrayList
中的第三个元素对ArrayList
排序的方法。例如,给定
ArrayList=[[5,4,0],[3,2,1],[3,3,3],[2,2,2]]
我想对它进行排序,这样,ArrayList
s按给出输出的第三个元素的升序排列:
ArrayList=[[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));
}
}
publicstaticvoidmain(字符串[]args){
ArrayList=新建ArrayList();
Random rand=新的Random();
对于(int i=0;i您可以使用Arrays.asList
来构造List
(请对接口编程),并且假设您使用的是Java 8+,您可以使用lambda编写比较器
public static void main(String[] args) {
List<List<Integer>> al = Arrays.asList( //
Arrays.asList(5, 4, 0), Arrays.asList(3, 2, 1), //
Arrays.asList(3, 3, 3), Arrays.asList(2, 2, 2));
Collections.sort(al, (a, b) -> a.get(2).compareTo(b.get(2)));
// Collections.sort(al, (a, b) -> Integer.compare(a.get(2), b.get(2)));
System.out.println(al);
}
您可以使用数组.asList
来构造列表
(请编程到接口),并且假设您使用的是Java 8+,您可以使用lambda编写比较器
public static void main(String[] args) {
List<List<Integer>> al = Arrays.asList( //
Arrays.asList(5, 4, 0), Arrays.asList(3, 2, 1), //
Arrays.asList(3, 3, 3), Arrays.asList(2, 2, 2));
Collections.sort(al, (a, b) -> a.get(2).compareTo(b.get(2)));
// Collections.sort(al, (a, b) -> Integer.compare(a.get(2), b.get(2)));
System.out.println(al);
}
第三个元素是唯一的吗?或者它们可能会重复?它们不是唯一的,并且可能有多个list.sort(Comparator.comparing(l->l.get(2));
谢谢shmosel按预期工作第三个元素是唯一的吗?或者它们可能会重复吗?它们不是唯一的,并且可能有多个list.sort(Comparator.comparating)(Comparator.comparating(l->l.get(2));
谢谢shmosel的工作原理与预期一致,但是你能解释一下它是如何基于第三个元素工作的吗?@Salman在lambda表达式中(a,b)->Integer.compare(a.get(2),b.get(2))
我们正在比较a
的第三个元素和b
(第一个是0
,第二个是1
)。但是你能解释一下它是如何基于第三个元素工作的吗?@Salman在lambda表达式中(a,b)->整数。比较(a.get(2),b.get(2))
我们正在比较a
的第三个元素和b
的第三个元素(第一个是0
,第二个是1
)。