Java教程

如何在Java中对ArrayList进行排序

在Java中, 集合是一个提供接口( Set, List, Queue等)和类( ArrayList,LinkedList等等)来存储对象组。这些类以无序方式存储数据。有时我们需要以一种称为 排序的有序方式来排列数据。可以按 升序降序的顺序以两种方式执行排序。
在本节中,我们将学习 如何对ArrayList进行排序降序。

ArrayList

在 Java , ArrayList 是在 java.util 包中定义的Collections框架类。它继承了AbstractList类。它动态存储元素。 ArrayList的优点是它没有大小限制。它比传统阵列更灵活。它可能具有重复的元素。我们还可以使用List接口的所有方法,因为它实现了 List 接口。
我们可以使用升序和降序两种方式对ArrayList进行排序。 Collections类提供了两种方法来对Java中的 ArrayList 进行排序。
sort() reverseOrder()

Collections.sort()方法

可以使用sort()方法对ArrayList进行排序。它接受ArrayList的对象作为要排序的参数,并根据其元素的自然顺序返回以升序排序的ArrayList。
语法
public static <T extends Comparable<? super T>>
void sort(List<T> list)
记住: ArrayList中的所有元素必须相互可比较,否则会引发 ClassCastException。。此处,相互可比意味着该列表必须具有相同类型的元素。例如,请考虑以下代码段:
//creating an instance of ArrayList that contains String type elements
ArrayList<String> list = new ArrayList<String>();
list.add("Computer");
list.add(123);
list.add("Hard Disk");
list.add("DRAM");
在上面的示例中,我们看到一个列表包含四个元素,其中三个元素为String类型,一个为Integer类型。 String中的三个元素可以相互比较,但是Integer类型的元素不能与其他三个元素进行比较。因此,列表必须具有相同类型的元素。

Collections.reverseOrder()方法

如果我们要以 降序对ArrayList进行排序 reverseOrder()方法。它使我们可以按 反字典顺序的顺序对ArrayList进行排序。
语法
public static <T> Comparator<T>reverseOrder()
它返回一个比较器,该比较器对实现Comparable接口的对象集合施加自然排序的逆序。
请记住,我们没有直接调用reverseOrder()方法。我们将其与 Collection.sort() 方法一起使用,如下所示
Collections.sort(objectOfArrayList, Collections.reverseOrder());
因此,对ArrayList进行降序排序分为两个步骤,首先是ArrayList对数据进行升序排序,然后使用 reverseOrder()方法对排序后的数据进行反转。
让我们创建按升序对ArrayList排序的程序。

按升序对ArrayList排序

在下面的示例中,我们创建了一个ArrayList类型为String,并向其中添加了一些元素。之后,我们调用了Collections类的sort()方法,并传递了ArrayList类的对象,即以升序对元素进行排序的列表。
SortArrayListExample1.java
import java.util.*;
public class SortArrayListExample1 {
    public static void main(String args[]) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Volkswagen");
        list.add("Toyota");
        list.add("Porsche");
        list.add("Ferrari");
        list.add("Mercedes-Benz");
        list.add("Audi");
        list.add("Rolls-Royce");
        list.add("BMW");
        System.out.println("Before Sorting: "+ list);
        Collections.sort(list);
        System.out.println("After Sorting: "+ list);
    }
}
输出:
Before Sorting: [Volkswagen, Toyota, Porsche, Ferrari, Mercedes-Benz, Audi, Rolls-Royce, BMW]
After Sorting: [Audi, BMW, Ferrari, Mercedes-Benz, Porsche, Rolls-Royce, Toyota, Volkswagen]
让我们看另一个对整数类型的ArrayList进行排序的示例。
SortArrayListExample2.java
import java.util.*;
public class SortArrayListExample2 {
    public static void main(String args[]) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(55);
        list.add(34);
        list.add(98);
        list.add(67);
        list.add(39);
        list.add(76);
        list.add(81);
        System.out.println("ArrayList Before Sorting:");
        for(int marks: list){
            System.out.println(marks);
        }
        Collections.sort(list);
        System.out.println("ArrayList After Sorting:");
        for(int marks: list){
            System.out.println(marks);
        }
    }
}
输出:
ArrayList Before Sorting:
55
34
98
67
39
76
81
ArrayList After Sorting:
34
39
55
67
76
81
98

按降序排列ArrayList

在下面的示例中,我们创建了一个String类型的ArrayList并向其中添加了一些元素。之后,我们调用了Collections类的reverseOrder()方法以及sort()方法,并传递了ArrayList类的对象,即以降序对元素进行排序的列表。
SortArrayListExample3.java
import java.util.*;
public class SortArrayListExample3{
    public static void main(String args[]) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Data Science");
        list.add("Testing");
        list.add("C#");
        list.add("Basic Language");
        list.add("UML");
        list.add("Algorithms ");
        list.add("Computer Networks");
        list.add("Python");
        System.out.println("Before Sorting: "+ list);
        Collection.sort() method
Collections.sort(list, Collections.reverseOrder());
        System.out.println("After Sorting: "+ list);
    }
}
输出:
Before Sorting: [Data Science, Testing, C#, Basic Language, UML, Algorithms, Computer Networks, Python]
After Sorting: [UML, Testing, Python, Data Science, Computer Networks, C#, Basic Language, Algorithms]
SortArrayListExample4.java
import java.util.*;
public class SortArrayListExample4 {
    public static void main(String args[]){
        ArrayList<Integer>list = new ArrayList<Integer>();
        list.add(566);
        list.add(230);
        list.add(123);
        list.add(110);
        list.add(689);
        list.add(12);
        list.add(95);
        System.out.println("ArrayList Before Sorting:");
        for(int marks: list){
            System.out.println(marks);
        }
        Collections.sort(list, Collections.reverseOrder());
        System.out.println("ArrayList After Sorting:");
        for(int marks: list){
            System.out.println(marks);
        }
    }
}
输出:
ArrayList Before Sorting:
566
230
123
110
689
12
95
ArrayList After Sorting:
689
566
230
123
110
95
12

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4