如何对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]