Java 中 TreeMap、HashMap 和 LinkedHashMap 的區別
HashMap、TreeMap 和 LinkedHashMap 都實現了 java.util.Map 介面,其特徵如下。
HashMap
HashMap 的插入和查詢複雜度為 O(1)。
HashMap 允許一個空鍵和多個空值。
HashMap 不維護任何順序。
TreeMap
TreeMap 的插入和查詢複雜度為 O(logN)。
TreeMap 不允許空鍵,但允許多個空值。
TreeMap 維護順序。它按排序和升序儲存鍵。
LinkedHashMap
LinkedHashMap 的插入和查詢複雜度為 O(1)。
LinkedHashMap 允許一個空鍵和多個空值。
LinkedHashMap 維護鍵值對插入時的順序。
示例
import java.util.HashMap;
import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
public class Tester {
public static void main(String args[]) {
Map<String, String> map = new HashMap<String, String>();
map.put("One", "1");
map.put("Five", "5");
map.put("Four", "4");
map.put("Two", "2");
map.put("Three", "3");
System.out.println("HashMap:
" + map);
Map<String, String> map1 = new LinkedHashMap<String, String>();
map1.put("One", "1");
map1.put("Five", "5");
map1.put("Four", "4");
map1.put("Two", "2");
map1.put("Three", "3");
System.out.println("LinkedHashMap:
" + map1);
Map<String, String> map2 = new TreeMap<String, String>();
map2.put("One", "1");
map2.put("Five", "5");
map2.put("Four", "4");
map2.put("Two", "2");
map2.put("Three", "3");
System.out.println("TreeMap:
" + map2);
}
}輸出
HashMap:
{Five = 5, One = 1, Four = 4, Two = 2, Three = 3}
LinkedHashMap:
{One = 1, Five = 5, Four = 4, Two = 2, Three = 3}
TreeMap:
{Five = 5, Four = 4, One = 1, Three = 3, Two = 2}在此處,你會看到 HashMap 的鍵順序是隨機的,LinkedHashMap 仍保留插入鍵時的順序,而 TreeMap 的鍵是按順序排列的。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP