位置:首頁 > Java技術 > Java教學 > Java TreeMap類

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