MST
星途 面试题库

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

假设有一个自定义类Student,包含name(String类型)和age(int类型)属性。要求使用Collections工具类对Student对象的List集合,先按年龄升序排序,如果年龄相同再按名字字母顺序排序,请写出具体实现代码。
24.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class StudentSorting {
    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", 20));

        Collections.sort(studentList, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int ageComparison = Integer.compare(s1.getAge(), s2.getAge());
                if (ageComparison != 0) {
                    return ageComparison;
                } else {
                    return s1.getName().compareTo(s2.getName());
                }
            }
        });

        for (Student student : studentList) {
            System.out.println(student);
        }
    }
}