Java 中 TreeMap 的內部工作原理


TreeMap 是 Java 集合框架的一個類,它實現了 NavigableMap 介面。它以樹狀結構儲存對映的元素,並提供了一種高效的替代方案,以排序順序儲存鍵值對。在內部,TreeMap 使用紅黑樹,這是一種自平衡二叉搜尋樹。TreeMap 必須實現 Comparable 介面或自定義 Comparator,以便它可以維護其元素的排序順序,否則,我們將遇到 java.lang.ClassCastException。本文旨在解釋 TreeMap 在 Java 中的內部工作原理。

Java 中 TreeMap 的內部工作原理

要了解 TreeMap 的內部工作原理,有必要概述紅黑樹演算法,因為 TreeMap 使用它來儲存元素。

紅黑樹與 TreeMap 的關係

紅黑樹是一種自平衡二叉搜尋樹,其屬性如下所述

  • 每個節點包含一個額外的位,用紅色或黑色表示。這些顏色用於確保樹保持平衡。

  • 根節點的顏色始終為黑色。

  • 紅色節點不能有另一個與它顏色相同的節點作為鄰居。

  • 從根節點到空節點,所有路徑上的黑色節點數必須相同。

現在,讓我們看看 TreeMap 的結構

如果我們將一個元素新增到 TreeMap 中,它將首先將第一個條目新增到第一個位置。從第二個元素開始,它將檢查當前條目的鍵是否大於或小於上一個條目。鍵值較小的元素將新增到父條目的左側,鍵值較大的元素將新增到父條目的右側。

TreeMap 的建構函式

要在我們的程式中使用 TreeMap 集合,我們首先需要建立 TreeMap 類的例項。為此,Java 提供了以下建構函式

  • TreeMap():它將建立一個空的 TreeMap 集合。

  • TreeMap(Map mapInstance):我們可以使用另一個對映中的條目建立一個 TreeMap。

  • TreeMap(Comparator comparatorInstance):它允許我們建立一個空的 TreeMap,該 TreeMap 將使用 Comparator 進行排序。

  • TreeMap(SortedMap sortedmapInstance):我們還可以使用排序對映中的條目建立一個 TreeMap。

讓我們討論一些示例,以便更好地理解上面討論的要點。

示例

在下面的示例中,我們將建立一個空的 TreeMap,然後使用 'put()' 方法將一些元素儲存到其中。我們將使用 for-each 迴圈列印其詳細資訊。結果將按排序順序顯示。

import java.util.*;
public class Example1 {
   public static void main(String[] args) {
      // creating a TreeMap
      TreeMap<String, Integer> TrMap = new TreeMap<>();
      // Adding elements in the map
      TrMap.put("Kurti", 4000);
      TrMap.put("Shirt", 3000);
      TrMap.put("TShirt", 1500);
      TrMap.put("Watch", 2000);
      TrMap.put("Perfume", 2500);
      // printing the details of map 
      System.out.println("Elements of the map: ");
      // iterating through the map
      for (String unKey : TrMap.keySet()) {
         // printing details of each node
         System.out.println("Item: " + unKey + ", Price: " + 
TrMap.get(unKey));
      }
      String frstKey = TrMap.firstKey(); // accessing first key
      String lstKey = TrMap.lastKey(); // accessing last key
      System.out.println("Accessing name of first key in Map: " + 
frstKey);
      System.out.println("Accessing name of last key in Map: " + 
lstKey);
   }
}

輸出

Elements of the map: 
Item: Kurti, Price: 4000
Item: Perfume, Price: 2500
Item: Shirt, Price: 3000
Item: TShirt, Price: 1500
Item: Watch, Price: 2000
Accessing name of first key in Map: Kurti
Accessing name of last key in Map: Watch

結論

我們從定義 TreeMap 開始本文,並在下一節中討論了它的內部工作原理。TreeMap 使用紅黑樹來儲存其元素,紅黑樹是一種可以自平衡的二叉搜尋樹。此外,我們還討論了一個示例來說明 TreeMap 的工作原理。

更新於: 2023年7月20日

625 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.