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 對鍵進行了排序。

更新於:2020 年 6 月 26 日

555 次瀏覽

開展你的事業

完成本課程獲得認證

開始學習
廣告