原文: https://javatutorial.net/java-treemap-example

TreeMap实现了Map接口,还实现了NavigableMap以及Abstract类。 映射是根据其键的自然顺序或通过提供初始化时间的比较器进行排序的。 就时间复杂度而言,此实现为containsKeygetputremove操作提供了log(n)成本。 请务必注意,TreeMap不会同步,因为如果地图被多个线程访问,并且如果至少胎面在结构上修改了地图,则必须在外部进行同步。

Java `TreeMap`示例 - 图1

有关TreeMap的要点

  • TreeMap实现Map接口。
  • TreeMap不允许使用空键。 而是,抛出NullPointerException。 虽然,多个空值可以与不同的键关联。
  • TreeMapJava 集合框架的成员。

TreeMap的继承图

Java `TreeMap`示例 - 图2

TreeMap继承图

TreeMap中的构造方法摘要

  1. TreeMap():使用其键的自然顺序构造一个新的空树映射。
  2. TreeMap(Comparator<? super K> comparator):构造一个新的空树映射,根据给定的比较器排序。
  3. TreeMap(Map<? extends K, ?extends V> m)::构造一个新的树映射,该树映射包含与给定图相同的映射,并根据其键的自然顺序进行排序。
  4. TreeMap(SortedMap<K, ? extends V> m):构造一个新的树映射,该树映射包含与指定排序图相同的映射并使用相同的排序。

TreeMap类中的方法

  1. void clear():删除树形图中的所有元素。
  2. Object clone():返回TreeMap实例的浅表副本。
  3. Comprator<? super K> comparator:返回用于对当前映射中的键进行排序的比较器;如果映射使用其键的自然排序,则返回null
  4. boolean containsKey(Object key):如果当前树映射中存在指定的键,则返回true
  5. boolean containsValue(Object value):如果当前任意一个地图键都存在指定值,则返回true
  6. V put(K key, V value):将指定的值放入指定的键。
  7. V remove(Object key):从当前映射中删除指定的键。
  8. V replace(K key, V value):仅当当前映射到某个值时,才替换指定键的条目。
  9. int size():获取当前树形图具有的元素数。
  10. Collection<V> values():返回当前映射中包含的值的集合视图。

有关EnumSet主要方法的更多信息,请随时访问原始 Oracle 文档

使用containsKey()containsValue()检查当前树形图是否包含指定的键或值,并使用put()填充TreeMap

  1. import java.util.*;
  2. public class TreeMapExample {
  3. public static void main(String[] args)
  4. {
  5. TreeMap<Integer, String> treeMapExample =
  6. new TreeMap<Integer, String>();
  7. // assing values to keys
  8. treeMapExample.put(5, "java");
  9. treeMapExample.put(15, "tutorial");
  10. treeMapExample.put(20, "dot");
  11. treeMapExample.put(25, "net");
  12. System.out.println("Current stage of the treeMap: " + treeMapExample);
  13. // Checking for the key '15'
  14. System.out.println("Is key 15 present in the map: " +
  15. treeMapExample.containsKey(15);
  16. // Checking for the key '5'
  17. System.out.println("Is the key 5 present? " +
  18. treeMapExample.containsKey(5));
  19. // Checking for value "java"
  20. System.out.println("Is the value 'java' present? " +
  21. treeMapExample.containsValue("java"));
  22. // Checking for value "tutorial"
  23. System.out.println("Is the value 'tutorial' present? " +
  24. treeMapExample.containsValue("tutorial"));
  25. }
  26. }

输出

  1. Is the key 15 present? true
  2. Is the key 5 present? true
  3. Is the value 'java' present? true
  4. Is the value 'tutorial' present? true

使用remove()TreeMap中删除元素

  1. import java.util.*;
  2. public class treeMapExample {
  3. public static void main(String args[]) {
  4. TreeMap<Integer,String> treeMap=new TreeMap<Integer,String>();
  5. // populating the tree map using put()
  6. map.put(5,"Joe");
  7. map.put(10,"Mike");
  8. map.put(15,"Antony");
  9. System.out.println("Before remove(): ");
  10. // looping through the tree map so we can get each element
  11. for(Map.Entry m:map.entrySet())
  12. {
  13. // print key and value
  14. System.out.println(m.getKey()+" "+m.getValue());
  15. }
  16. map.remove(15);
  17. System.out.println("After remove(): ");
  18. for(Map.Entry m:map.entrySet())
  19. {
  20. // print key and value
  21. System.out.println(m.getKey()+" "+m.getValue());
  22. }
  23. }
  24. }

输出

  1. Before remove:
  2. 5 Joe
  3. 10 Mike
  4. 15 Antony
  5. After Remove
  6. 5 Joe
  7. 10 Mike