Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对ArrayList进行排序<;ArrayList<;整数>&燃气轮机;通过ArrayList中的第三个元素<;整数>;_Java_Sorting_Arraylist - Fatal编程技术网

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
)。