如何对Java ArrayList进行排序
Java中的ArrayList是有序集合,从某种意义上说,它保持元素的插入顺序,但是有时我们可能需要对ArrayList进行升序或者降序排序。在这篇文章中,我们将看到如何用Java对ArrayList进行排序。
用于对Java ArrayList进行排序的方法
Java中的Collections类提供了许多对集合进行操作的实用程序方法,该类还具有sort方法。实际上sort()方法在Collections类中已重载,并且有2个变体。
void sort(List list)–根据其元素的自然顺序将指定列表按升序排序。
sort(List list,Comparator <?super T> c)–根据指定Comparator的顺序对指定列表进行排序。
排序Java ArrayList示例
如果要按升序对ArrayList进行排序,则只需在Collections.sort()方法中传递List。 Java中的所有包装器类(Integer,Long等),String,Date实现Comparable接口,并提供compareTo()方法的实现,该方法确定其自然顺序。因此,如果我们具有String,Integer,Long,Float的ArrayList,则将使用sort()方法以升序对Date进行排序。
字符串的ArrayList排序示例代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortingList {
public static void main(String[] args) {
List<String> carList = new ArrayList<String>();
carList.add("Audi");
carList.add("Jaguar");
carList.add("Mini Cooper");
carList.add("BMW");
System.out.println("List elements- " + carList);
// Sorting list
Collections.sort(carList);
System.out.println("List elements after sorting- " + carList);
}
}
输出:
List elements- [Audi, Jaguar, Mini Cooper, BMW] List elements after sorting- [Audi, BMW, Jaguar, Mini Cooper]
按降序对Java ArrayList进行排序
如果要以自然顺序的相反顺序对ArrayList进行排序,则Collections类具有可以使用的reverseOrder()方法。另外,我们可以编写自己的比较器。
reverseOrder()–返回一个Comparator,它对实现Comparable接口的对象集合强加自然顺序的逆序。
使用reverseOrder方法对Arraylist进行排序
由于reverseOrder()方法返回Comparator,因此我们必须使用Collections.sort()方法,在其中可以将Comparator用作参数。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortingList {
public static void main(String[] args) {
List<String> carList = new ArrayList<String>();
carList.add("Audi");
carList.add("Jaguar");
carList.add("Mini Cooper");
carList.add("BMW");
System.out.println("List elements- " + carList);
// Sorting list in reverse order
Collections.sort(carList, Collections.reverseOrder());
System.out.println("List elements after sorting- " + carList);
}
}
输出:
List elements- [Audi, Jaguar, Mini Cooper, BMW] List elements after sorting- [Mini Cooper, Jaguar, BMW, Audi]
通过提供自己的自定义比较器对Arraylist进行排序
Collections.reverseOrder()方法返回Comparator类的实现。我们可以以相同的方式编写自己的比较器来执行要使用的排序,并使用该比较器对列表进行排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortingList {
public static void main(String[] args) {
List<String> carList = new ArrayList<String>();
carList.add("Audi");
carList.add("Jaguar");
carList.add("Mini Cooper");
carList.add("BMW");
System.out.println("List elements- " + carList);
// Sorting list in reverse order
Collections.sort(carList, new MyComparator());
System.out.println("List elements after sorting- " + carList);
}
}
//Comparator class
class MyComparator implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}
输出:
List elements- [Audi, Jaguar, Mini Cooper, BMW] List elements after sorting- [Mini Cooper, Jaguar, BMW, Audi]

