位置:首页 > 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