TreeMap、HashMap 和 LinkedHashMap 在 Java 程式設計中的區別
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 對鍵進行了排序。
廣告