Java中EnumMap和HashMap的區別
EnumMap是在JDK5中引入的。它被設計為在Map中使用Enum作為鍵。它也是Map介面的實現。EnumMap中的所有鍵都應該屬於相同的列舉型別。在EnumMap中,鍵不能為null,否則會丟擲NullPointerException。
根據Java文件:
EnumMap內部使用陣列,這種表示方式非常緊湊且高效。
HashMap也是Map介面的實現。它用於以鍵值對的形式儲存資料。它可以包含一個null鍵和多個null值。在HashMap中,鍵不能是基本型別。 Java HashMap實現為基本操作(get和put)提供了恆定時間效能,假設雜湊函式將元素正確地分散到桶中。
| 序號 | 鍵 | EnumMap | HashMap |
|---|---|---|---|
1 | 基本 | 一種專門用於列舉型別鍵的Map實現 | HashMap也是Map介面的實現。 |
2 | 空鍵 | 它不能有空鍵。 | 它可以有一個空鍵和多個空值 |
3 | 效能 | 所有操作都在恆定時間內執行,因此它比HashMap快 | 它比HashMap慢 |
4. | 內部實現 | 它內部使用陣列 | 它內部使用雜湊表 |
5. | 排序 | EnumMap按其鍵的自然順序儲存鍵 | HashMap無序 |
EnumMap示例
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
public class EnumMapExample {
public enum LaptopEnum {
HCL, DELL, IBM
};
public static void main(String[] args) {
// create enum map
EnumMap map = new EnumMap(LaptopEnum.class);
map.put(LaptopEnum.HCL, "100");
map.put(LaptopEnum.DELL, "200");
map.put(LaptopEnum.IBM, "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}HashMap示例
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// create Hash map
Map map = new HashMap();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP