Student类会写吧,先定义它,然后看我的代码
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
import cn.itcast_02.Student;
/*
* TreeMap存储自定义对象并遍历。
* 键:Student
* 值:String
*
* 如果一个自定义对象做键,用TreeMap集合。。
* 两种方式:
* A:让自定义对象所属的类去实现Comparable接口
* B:使用带参构造方法,创建TreeMap,接收Comparator接口参数。
*/
public class TreeMapDemo2 {
public static void main(String[] args) {
// 创建集合对象
TreeMap<Student, String> tm = new TreeMap<Student, String>(
new Comparator<Student>() { //匿名内部类
@Override
public int compare(Student s1, Student s2) {
int num = s2.getAge() - s1.getAge(); //实现年龄从大到小排序
int num2 = (num == 0) ? s1.getName().compareTo( //年龄相等就比姓名
s2.getName()) : num;
return num2;
}
});
// 创建元素对象
Student s1 = new Student("张三", 30);
Student s2 = new Student("李四", 40);
Student s3 = new Student("小六", 50);
Student s4 = new Student("王五", 20);
Student s5 = new Student("小三", 30);
// 添加元素
tm.put(s1, "it001");
tm.put(s2, "it002");
tm.put(s3, "it003");
tm.put(s4, "it004");
tm.put(s5, "it005");
// 遍历
Set<Student> set = tm.keySet();
for (Student key : set) {
String value = tm.get(key);
System.out.println(key.getName() + "***" + key.getAge() + "***"
+ value);
}
}
}
|