Java API —— TreeMap类
1、TreeMap类概述
键是红黑树结构,可以保证键的排序和唯一性
2、TreeMap案例
TreeMap<String,String>
TreeMap<Student,String>
例子1:
package treemapdemos; import java.util.Set; import java.util.TreeMap; /** * Created by gao on 15-12-22. */ /* * TreeMap:是基于红黑树的Map接口的实现。 * HashMap<String,String> * 键:String * 值:String */ public class TreeMapDemo01 { public static void main(String[] args) { // 创建集合对象 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); } } }
输出结果:(唯一和自然排序)
hello---你好
java---爪哇
javaee---爪哇EE
world---世界2
例子2:
package treemapdemos; import java.util.Comparator; import java.util.Set; import java.util.TreeMap; /** * Created by gao on 15-12-22. */ /* * TreeMap<Student,String> * 键:Student * 值:String */ public class TreeMapDemo02 { 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 = s1.getAge() - s2.getAge(); int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num; return num2; } }); // 创建学生对象 Student s1 = new Student("潘安", 30); Student s2 = new Student("柳下惠", 35); Student s3 = new Student("唐伯虎", 33); Student s4 = new Student("燕青", 32); Student s5 = new Student("唐伯虎", 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); } } }
输出结果:(唯一和排序)
潘安---30---宋朝
燕青---32---清朝
唐伯虎---33---汉朝
柳下惠---35---元朝