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