面试题答案
一键面试- 对
List
进行自然排序的方法: 在Java中,使用java.util.Collections
类的sort
方法可以对List
进行自然排序。sort
方法有两个重载形式,常用的是public static <T extends Comparable<? super T>> void sort(List<T> list)
。这个方法要求List
中的元素实现了Comparable
接口。 - 举例说明:
在上述代码中,import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ListSortExample { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); numbers.add(5); numbers.add(2); numbers.add(8); Collections.sort(numbers); System.out.println(numbers); } }
Integer
类已经实现了Comparable
接口,所以可以直接使用Collections.sort
方法对包含Integer
的List
进行自然排序,输出结果是[2, 5, 8]
。 - 自定义对象进行自然排序的条件:
如果
List
中的元素是自定义对象,该自定义对象必须实现java.lang.Comparable
接口,并实现compareTo
方法。compareTo
方法定义了该对象与其他同类型对象比较的逻辑。例如:
在上述代码中,class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(Person other) { // 按年龄升序排序 return this.age - other.age; } } public class CustomObjectSortExample { public static void main(String[] args) { List<Person> people = new ArrayList<>(); people.add(new Person("Alice", 25)); people.add(new Person("Bob", 20)); people.add(new Person("Charlie", 30)); Collections.sort(people); for (Person person : people) { System.out.println(person.name + " : " + person.age); } } }
Person
类实现了Comparable
接口,compareTo
方法定义了按年龄升序排序的逻辑。所以可以使用Collections.sort
方法对包含Person
对象的List
进行自然排序。