当前位置:  首页>> 技术小册>> Java语言基础10-Java中的集合

  • TreeMap 存储 Key - Value 对时,需要根据 key - value 对进行排序。
  • TreeMap 可以保证所有的 key - value 对处于有序状态。
  • TreeMap 底层使用红黑树结构存储数据。
  • TreeMap 的 key 的排序:
    • 自然排序:TreeMap 的所有的 key 必须实现 Comparable 接口,而且所有的 key 应该是同一个类的对象,否则将会抛出 ClasssCastException 。
    • 定制排序:创建 TreeMap 时,传入一个Comparator 对象,该对象负责对TreeMap中的所有key进行排序。此时不需要 Map 的 key 实现 Comparable 接口。
  • TreeMap 判断两个 key 相等的标准:两个 key 通过 compareTo() 方法或者 compare() 方法返回 0 。

  • 示例:

  1. package com.github.map.demo7;
  2. import java.util.Map;
  3. import java.util.TreeMap;
  4. /**
  5. * @author maxiaoke.com
  6. * @version 1.0
  7. */
  8. public class Test {
  9. public static void main(String[] args) {
  10. Map<String, Integer> map = new TreeMap<>();
  11. map.put("c", 25);
  12. map.put("h", 18);
  13. map.put("a", 21);
  14. map.put("b", 98);
  15. System.out.println("map = " + map);
  16. }
  17. }

示例:

  1. package com.github.map.demo8;
  2. import java.util.Comparator;
  3. import java.util.Map;
  4. import java.util.TreeMap;
  5. /**
  6. * @author maxiaoke.com
  7. * @version 1.0
  8. */
  9. public class Test {
  10. public static void main(String[] args) {
  11. Map<Person, String> map = new TreeMap<>(new Comparator<Person>() {
  12. @Override
  13. public int compare(Person o1, Person o2) {
  14. return o1.getAge() - o2.getAge();
  15. }
  16. });
  17. map.put(new Person("张三", 18), "大一");
  18. map.put(new Person("李四", 20), "大一");
  19. map.put(new Person("王五", 19), "大二");
  20. map.put(new Person("赵六", 23), "大四");
  21. map.put(new Person("田七", 17), "大一");
  22. System.out.println("map = " + map);
  23. }
  24. }

该分类下的相关小册推荐: