TreeMap類

使用TreeMap類
TreeMap類不僅實現了Map接口,還實現了Map接口的子接口java.util.SortedMap。由TreeMap類實現的Map集合,不允許鍵對象爲null,因爲集合中的映射關係是根據鍵對象按照一定順序排列的,TreeMap類通過實現SortedMap接口得到的方法如表1所示。

表1  TreeMap類通過實現java.util.SortedMap接口得到的方法
在添加、刪除和定位映射關係上,TreeMap類要比HashMap類的性能差一些,但是其中的映射關係具有一定的順序,如果不需要一個有序的集合,則建議使用HashMap類;如果需要進行有序的遍歷輸出,則建議使用TreeMap類,在這種情況下,可以先使用由HashMap類實現的Map集合,在需要順序輸出時,再利用現有的HashMap類的實例,創建一個具有完全相同映射關係的TreeMap類型的實例,例如下面的例子。
下面的代碼首先利用HashMap類實現一個Map集合,初始化並遍歷;然後再利用TreeMap類實現一個Map集合,初始化並遍歷,默認按鍵對象升序排列;最後再利用TreeMap類實現一個Map集合,初始化爲按鍵對象降序排列,實現方式爲將Collections.reverseOrder()作爲構造函數TreeMap(Comparator c)的入口參數,即與默認排序方式相反,關鍵代碼如下:
src\com\mwq\TestCollection.java關鍵代碼:
public static void main(String[] args) {
Person person1 = new Person("馬先生", 220181);
Person person2 = new Person("李先生", 220193);
Person person3 = new Person("王小姐", 220186);
Map<Number, Person> map = new HashMap<Number, Person>();
……// 由於篇幅有限,此處省略了向集合中添加映射關係的代碼
System.out.println("由HashMap類實現的Map集合,無序:");
for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) {// 遍歷集合
Person person = map.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("由TreeMap類實現的Map集合,鍵對象升序:");
TreeMap<Number, Person> treeMap = new TreeMap<Number, Person>();
treeMap.putAll(map);
……// 由於篇幅有限,此處省略了遍歷集合的代碼
System.out.println("由TreeMap類實現的Map集合,鍵對象降序:");
TreeMap<Number, Person> treeMap2 = new TreeMap<Number, Person>(
Collections.reverseOrder());// 初始化爲反轉排序
treeMap2.putAll(map);
……// 由於篇幅有限,此處省略了遍歷集合的代碼
}
src\com\mwq\TestCollection.java完整代碼:
package com.mwq;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
Person person1 = new Person("馬先生", 220181);
Person person2 = new Person("李先生", 220193);
Person person3 = new Person("王小姐", 220186);
Map<Number, Person> map = new HashMap<Number, Person>();
map.put(person1.getId_card(), person1);
map.put(person2.getId_card(), person2);
map.put(person3.getId_card(), person3);
System.out.println("由HashMap類實現的Map集合,無序:");
for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) {// 遍例集合
Person person = map.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("由TreeMap類實現的Map集合,鍵對象升序:");
TreeMap<Number, Person> treeMap = new TreeMap<Number, Person>();
treeMap.putAll(map);
for (Iterator<Number> it = treeMap.keySet().iterator(); it.hasNext();) {// 遍例集合
Person person = treeMap.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("由TreeMap類實現的Map集合,鍵對象降序:");
TreeMap<Number, Person> treeMap2 = new TreeMap<Number, Person>(
Collections.reverseOrder());// 初始化爲反轉排序
treeMap2.putAll(map);
for (Iterator it = treeMap2.keySet().iterator(); it.hasNext();) {// 遍例集合
Person person = (Person) treeMap2.get(it.next());
System.out.println(person.getId_card() + " " + person.getName());
}
System.out.println("結束!");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章