Java TreeMap類
TreeMap類實現了用樹形Map接口。樹形圖提供了存儲在排序順序的鍵/值對的有效手段,並允許快速檢索。
應該注意的是,不同於哈希映射,樹映射保證它的元素將在升序鍵順序排列。
TreeMap類支持四種構造函數。第一種形式構造一個空的樹映射,將使用其鍵的自然順序進行排序:
TreeMap( )
第二種形式構造一個空樹為基礎的映射,將通過使用比較器comp進行排序:
TreeMap(Comparator comp)
第三種形式初始化與m條目的樹狀圖,將使用鍵的自然順序進行排序:
TreeMap(Map m)
第四種形式初始化與sm的條目樹圖,這將在相同的順序為sm進行排序:
TreeMap(SortedMap sm)
除了從它的父類繼承的方法,TreeMap中定義了以下方法:
SN | 方法及描述 |
---|---|
1 |
void clear() 從此TreeMap中移除所有映射關係。 |
2 |
Object clone() 返回此TreeMap的實例的淺表副本。 |
3 |
Comparator comparator() 返回用於對此映射進行排序,或者null,如果此映射使用鍵的自然順序進行比較。 |
4 |
boolean containsKey(Object key) 如果此映射包含指定鍵的映射關係返回true。 |
5 |
boolean containsValue(Object value) 如果此映射一個或多個鍵映射到指定值返回true。 |
6 |
Set entrySet() 返回此映射中包含的映射關係的set視圖。 |
7 |
Object firstKey() 當前返回第一個(最低)鍵在此有序映射。 |
8 |
Object get(Object key) 返回此映射中映射到指定鍵的值。 |
9 |
SortedMap headMap(Object toKey) 返回此映射的鍵嚴格小於toKey的部分視圖。 |
10 |
Set keySet() 返回此映射中包含的鍵的Set視圖。 |
11 |
Object lastKey() 目前返回最後一個(最高)鍵在此有序映射。 |
12 |
Object put(Object key, Object value) 關聯與此映射中的指定鍵指定的值。 |
13 |
void putAll(Map map) 複製所有由指定映射此映射中的映射。 |
14 |
Object remove(Object key) 刪除映射從此TreeMap中如果存在此鍵。 |
15 |
int size() 返回鍵 - 值映射關係在這個映射中的數量。 |
16 |
SortedMap subMap(Object fromKey, Object toKey) 返回此映射的鍵值的範圍從fromKey(包括)到toKey,專屬的部分視圖。 |
17 |
SortedMap tailMap(Object fromKey) 返回此映射,其鍵大於等於fromKey的部分視圖。 |
18 |
Collection values() 返回此映射中包含的值的collection視圖。 |
例子:
下麵的程序說明了幾個由這個集合所支持的方法:
import java.util.*; public class TreeMapDemo { public static void main(String args[]) { // Create a hash map TreeMap tm = new TreeMap(); // Put elements to the map tm.put("Zara", new Double(3434.34)); tm.put("Mahnaz", new Double(123.22)); tm.put("Ayan", new Double(1378.00)); tm.put("Daisy", new Double(99.22)); tm.put("Qadir", new Double(-19.08)); // Get a set of the entries Set set = tm.entrySet(); // Get an iterator Iterator i = set.iterator(); // Display elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ": "); System.out.println(me.getValue()); } System.out.println(); // Deposit 1000 into Zara's account double balance = ((Double)tm.get("Zara")).doubleValue(); tm.put("Zara", new Double(balance + 1000)); System.out.println("Zara's new balance: " + tm.get("Zara")); } }
這將產生以下結果:
Ayan: 1378.0 Daisy 99.22 Mahnaz: 123.22 Qadir: -19.08 Zara: 3434.34 Zara's current balance: 4434.34