需求:定义一个TreeMap集合,添加一些学生对象 键:学生对象 值:籍贯 要求:按学生年龄升序排列,年龄一样按姓名的字母排列,同姓名同年龄视为一个人
时间: 2024-10-17 15:12:06 浏览: 52
Java面向对象编程与集合框架:Map接口与泛型的应用解析
要在Java中创建一个TreeMap集合并满足上述需求,首先需要定义一个`Student`类,包含学生的属性如年龄(age)和姓名(name),然后将这些学生对象作为键(key)存储到TreeMap中,值(value)为他们的籍贯。TreeMap自然会按照键的比较器(Comparator)排序,我们可以自定义一个复合比较器来进行年龄和姓名的多重排序。
```java
import java.util.*;
class Student {
String name;
int age;
String origin;
// 构造函数、getters和setters...
}
public class Main {
public static void main(String[] args) {
TreeMap<Student, String> studentMap = new TreeMap<>(
(a, b) -> {
if (a.age != b.age) return a.age - b.age; // 按年龄排序
else return a.name.compareTo(b.name); // 年龄相同按姓名排序
}
);
// 添加学生对象,例如
Student student1 = new Student("张三", 20, "北京");
Student student2 = new Student("李四", 22, "上海");
Student student3 = new Student("王五", 20, "广州");
studentMap.put(student1, student1.origin);
studentMap.put(student2, student2.origin);
studentMap.put(student3, student3.origin);
// 输出按要求排序后的学生和籍贯
for (Map.Entry<Student, String> entry : studentMap.entrySet()) {
System.out.println("Name: " + entry.getKey().getName() + ", Age: " + entry.getKey().getAge() + ", Origin: " + entry.getValue());
}
//
阅读全文