Java 集合 sort() 方法



描述

Java Collections sort(List<T>) 方法用于根据其元素的自然顺序将指定的列表排序为升序。

声明

以下是 java.util.Collections.sort() 方法的声明。

public static <T extends Comparable<? super T>> void sort(List<T> list)

参数

list − 要排序的列表。

返回值

异常

  • ClassCastException − 如果列表包含不能相互比较的元素(例如,字符串和整数),则抛出此异常。

  • UnsupportedOperationException − 如果指定的列表的列表迭代器不支持 set 操作,则抛出此异常。

Java Collections sort(List, Comparator) 方法

描述

sort(List<T>,Comparator<? super T>) 方法用于根据指定的比较器所引起的顺序对指定的列表进行排序。

声明

以下是 java.util.Collections.sort() 方法的声明。

public static <T> void sort(List<T> list,Comparator<? super T> c)

参数

  • list − 要排序的列表。

  • c − 用于确定列表顺序的比较器。

返回值

异常

  • ClassCastException − 如果列表包含使用指定的比较器不能相互比较的元素,则抛出此异常。

  • UnsupportedOperationException − 如果指定的列表的列表迭代器不支持 set 操作,则抛出此异常。

整数列表排序示例

以下示例演示了如何使用 Java Collection sort(List) 方法,利用自然顺序获得排序列表。我们创建了一个包含一些整数的 List 对象。使用 sort(List) 方法对列表进行排序,然后打印结果。

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CollectionsDemo {

   public static void main(String[] args) {
      List<Integer> list = new ArrayList<>(Arrays.asList(1,4,3,6,5,2));

      System.out.println("Initial collection value: " + list);
      // sort the list.
      Collections.sort(list);
      System.out.println("Final collection value: " + list);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果。

Initial collection value: [1, 4, 3, 6, 5, 2]
Final collection value: [1, 2, 3, 4, 5, 6]

可比较对象列表排序示例

以下示例演示了如何使用 Java Collection sort(List) 方法,利用自然顺序获得排序列表。我们创建了一个包含一些 Student 对象的 List 对象。使用 sort(List) 方法对列表进行排序,然后打印结果。

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CollectionsDemo {

   public static void main(String[] args) {
      List<Student> list = new ArrayList<>(Arrays.asList(new Student(1, "Julie"), new Student(3, "Adam"), new Student(2, "Robert")));

      System.out.println("Initial collection value: " + list);
      // sort the list.
      Collections.sort(list);
      System.out.println("Final collection value: " + list);
   }
}
class Student implements Comparable<Student> {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   @Override
   public int compareTo(Student student) {
      return this.rollNo - student.rollNo;
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果。

Initial collection value: [[ 1, Julie ], [ 3, Adam ], [ 2, Robert ]]
Final collection value: [[ 1, Julie ], [ 2, Robert ], [ 3, Adam ]]

使用比较器排序对象列表示例

以下示例演示了如何使用 Java Collection sort(List, Comparator) 方法,利用给定的比较器获得排序列表。我们创建了一个包含一些 Student 对象的 List 对象。使用 sort(List) 方法对列表进行排序,然后打印结果。

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Comparator;

public class CollectionsDemo {

   public static void main(String[] args) {
      List<Student> list = new ArrayList<>(Arrays.asList(new Student(1, "Julie"), new Student(3, "Adam"), new Student(2, "Robert")));

      System.out.println("Initial collection value: " + list);
	  RollNoComparator comparator = new RollNoComparator();
      // sort the list.
      Collections.sort(list,comparator);
      System.out.println("Final collection value: " + list);
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   public int getRollNo() {
      return rollNo;
   }

   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

class RollNoComparator implements Comparator<Student>{

   @Override
   public int compare(Student o1, Student o2) {
      return o1.getRollNo()-o2.getRollNo();
   }	
}

输出

让我们编译并运行上述程序,这将产生以下结果。

Initial collection value: [[ 1, Julie ], [ 3, Adam ], [ 2, Robert ]]
Final collection value: [[ 1, Julie ], [ 2, Robert ], [ 3, Adam ]]
java_util_collections.htm
广告