Java TreeMap类是一个基于红黑树的实现。它提供了一种按有序顺序存储键值对的有效方法。
TreeMap类的要点如下:
TreeMap 的层次结构:
TreeMap 类声明:
public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable
TreeMap 的构造方法:
Constructor | Description |
---|---|
TreeMap() | 它用于构造一个空的树映射,该映射将使用其键的自然顺序进行排序。 |
TreeMap(Comparator super K> comparator) | 它用于构造一个空的基于树的映射,该映射将使用比较器comp进行排序。 |
TreeMap(Map extends K,? extends V> m) | 它用于用来自m的条目初始化一个树映射,该树映射将使用键的自然顺序排序。 |
TreeMap(SortedMap | 它用于用SortedMap sm中的条目初始化一个树映射,它的排序顺序将与sm.相同 |
为了向TreeMap添加元素,我们可以使用put()方法。但是,TreeMap中不保留插入顺序。在内部,对每个元素的键进行比较并按升序排序。
实例:
public static void main(String[] args) {
TreeMap<Integer, String> hm1 = new TreeMap<>();
// 插入元素
hm1.put(1, "深圳");
hm1.put(2, "广州");
hm1.put(3, "惠州");
System.out.println("TreeMap 集合:"+hm1);
}
输出:
TreeMap 集合:{1=深圳, 2=广州, 3=惠州}
添加元素之后,如果我们希望更改元素,可以使用put()方法再次添加元素。由于树映射中的元素是使用键建立索引的,因此键的值可以通过简单地插入我们想要更改的键的更新值来更改。
实例:
public static void main(String[] args) {
TreeMap<Integer, String> hm1 = new TreeMap<>();
// 插入元素
hm1.put(1, "深圳");
hm1.put(2, "广州");
hm1.put(3, "惠州");
System.out.println("TreeMap 集合:"+hm1);
hm1.put(new Integer(2),"海南");
System.out.println("修改后"+hm1);
}
输出:
TreeMap 集合:{1=深圳, 2=广州, 3=惠州}
修改后{1=深圳, 2=海南, 3=惠州}
为了从TreeMap中删除一个元素,我们可以使用remove()方法。此方法获取键值,并从该树映射中移除该键的映射(如果该键在映射中存在)。
实例:
public static void main(String[] args) {
TreeMap<Integer, String> hm1 = new TreeMap<>();
// 插入元素
hm1.put(1, "深圳");
hm1.put(2, "广州");
hm1.put(3, "惠州");
System.out.println("TreeMap 集合:"+hm1);
hm1.remove(2);
System.out.println("删除后"+hm1);
}
输出:
TreeMap 集合:{1=深圳, 2=广州, 3=惠州}
删除后{1=深圳, 3=惠州}
有多种方法可以遍历Map。最著名的方法是使用for-each循环来获取键。键的值是通过使用getValue()方法找到的。
实例:
public static void main(String[] args) {
TreeMap<Integer, String> hm1 = new TreeMap<>();
// 插入元素
hm1.put(1, "深圳");
hm1.put(2, "广州");
hm1.put(3, "惠州");
System.out.println("TreeMap 集合:"+hm1);
for (Map.Entry mapElement : hm1.entrySet()) {
int key = (int)mapElement.getKey();
// Finding the value
String value = (String)mapElement.getValue();
System.out.println(key + " : " + value);
}
}
输出:
TreeMap 集合:{1=深圳, 2=广州, 3=惠州}
1 : 深圳
2 : 广州
3 : 惠州
待续