键是红黑树结构,可以保证键的排序和唯一性
例一:存储HashMap<String,String>
// 创建集合对象
TreeMap<String, String> tm = new TreeMap<String, String>();
// 创建元素并添加元素
tm.put("hello", "你好");
tm.put("world", "世界");
tm.put("java", "爪哇");
tm.put("world", "世界2");
tm.put("javaee", "爪哇EE");
// 遍历集合
Set<String> set = tm.keySet();
for (String key : set) {
String value = tm.get(key);
System.out.println(key + "---" + value);
}
例二:存储类型TreeMap<Student,String>
键的存储涉及自然排序和比较排序
* 1.pojo类实现Comparable接口,无参构造,自然排序
*2.有参构造,new一个Comparator接口,比较器排序
// 创建集合对象
TreeMap<Student, String> tm = new TreeMap<Student, String>(
new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
// 主要条件
int num = s1.getAge() - s2.getAge();
// 次要条件
int num2 = num == 0 ? s1.getName().compareTo(
s2.getName()) : num;
return num2;
}
});
// 创建学生对象
Student s1 = new Student("jay", 30);
Student s2 = new Student("tom", 35);
Student s3 = new Student("jason", 33);
Student s4 = new Student("lay", 32);
Student s5 = new Student("john", 33);
// 存储元素
tm.put(s1, "中国");
tm.put(s2, "日本");
tm.put(s3, "韩国");
tm.put(s4, "朝鲜");
tm.put(s5, ",印度");
// 遍历
Set<Student> set = tm.keySet();
for (Student key : set) {
String value = tm.get(key);
System.out.println(key.getName() + "---" + key.getAge() + "---"
+ value);
}