MST

星途 面试题库

面试题:Java中如何使用Collections工具类对自定义对象的集合进行排序

假设你有一个包含自定义类(例如Student类,有name和age属性)的List集合,如何使用Java的Collections工具类按照age属性对该集合进行升序排序?请给出实现代码,并解释关键步骤。
35.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 定义Student
class Student {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
  1. 使用Collections工具类进行排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student("Alice", 20));
        studentList.add(new Student("Bob", 18));
        studentList.add(new Student("Charlie", 22));

        // 定义比较器,按照age属性升序排序
        Comparator<Student> ageComparator = Comparator.comparingInt(Student::getAge);

        // 使用Collections.sort方法进行排序
        Collections.sort(studentList, ageComparator);

        // 输出排序后的结果
        studentList.forEach(student -> System.out.println("Name: " + student.getName() + ", Age: " + student.getAge()));
    }
}
  1. 关键步骤解释
    • 定义Student:包含nameage属性以及对应的访问器方法。
    • 创建List集合并添加元素:创建一个ArrayList,并向其中添加Student对象。
    • 定义比较器:使用Comparator.comparingInt方法创建一个比较器,它会根据Student对象的age属性进行比较。comparingInt方法接受一个Function,这里通过Student::getAge获取Student对象的age值。
    • 排序:调用Collections.sort方法,传入studentList和定义好的比较器ageComparator,这样就会按照age属性对集合进行升序排序。
    • 输出结果:使用forEach方法遍历排序后的集合,并打印每个Student对象的nameage属性。