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 的工作原理。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP