Java中的Map和Dictionary是兩個非常常用的數(shù)據(jù)結(jié)構(gòu)。它們都是存儲鍵值對(key-value)的容器。但是它們之間還是有一些區(qū)別的。
Map是一個接口,它有很多實現(xiàn)類。Map存儲的鍵值對是無序的。Java中最常用的三個Map實現(xiàn)類是Hashtable、HashMap和TreeMap。其中,Hashtable是線程安全的,但是操作效率較低;HashMap是線程不安全的,但是操作效率較高;TreeMap可以對鍵進(jìn)行排序,但是效率稍低。
// 創(chuàng)建一個HashMap對象 Mapmap = new HashMap<>(); // 添加鍵值對 map.put("apple", 1); map.put("banana", 2); map.put("orange", 3); // 遍歷Map for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
Dictionary是一個抽象類,它被用于存儲鍵值對。Dictionary中的方法都是被synchronized修飾的,所以它是線程安全的。但是由于它是一個抽象類,它只有一個實現(xiàn)類Hashtable。
// 創(chuàng)建一個Hashtable對象 Dictionarydict = new Hashtable<>(); // 添加鍵值對 dict.put("apple", 1); dict.put("banana", 2); dict.put("orange", 3); // 遍歷Dictionary Enumeration keys = dict.keys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); System.out.println(key + ": " + dict.get(key)); }
在實際開發(fā)中,HashMap是使用最廣泛的Map實現(xiàn)類,因為它的操作效率較高。而Dictionary則用得比較少,因為它只有一個實現(xiàn)類Hashtable。