要從 Java 中的 TreeMap 取得同步 Map,我們可以使用 Collection 介面的內建方法「synchronizedMap()」。這裡,TreeMap是用來實作NavigableMap介面的類別。它將地圖的元素儲存在樹狀結構中。它提供了一種按排序順序儲存鍵值對的有效替代方法。預設情況下,TreeMap 不同步。在本文中,我們將透過範例程式來解釋同步的必要性及其實際實現。
樹圖不是線路安全的,這意味著當我們在多執行緒環境中實作它時,多個執行緒可以同時存取和修改它,而無需任何協調。這可能會導致數據不一致和元素的意外行為。它也可能影響操作的結果。
因此,我們需要使用synchronizedMap()來同步對TreeMap元素的存取。此方法在原始 TreeMap 周圍建立一個包裝器,並在執行緒嘗試存取或修改它時鎖定它。
synchronizedMap() 是 Collections 類別的靜態方法,它將 TreeMap 集合的實例作為參數並從中傳回一個同步的 Map。
Collections.synchronizedMap(instanceOfTreeMap);
這裡,「Collections」是集合介面的一個類別。
TreeMap 的一般語法如下 -
TreeMap<TypeOfKey, TypeOfValue> nameOfMap = new TreeMap<>();
首先,匯入「java.util」套件以啟用 TreeMap 類別。
然後,建立一個 TreeMap,其中鍵為 String 類型,值為 整數類型。
使用內建方法「put()」在集合中儲存一些元素
現在,同步這些元素並將它們儲存在 Map 類型的變數中。
最後,列印新的同步地圖並退出。
下面的範例說明如何使用synchronizedMap() 來同步指定的 TreeMap。
import java.util.*; public class Maps { public static void main(String[] args) { TreeMap<String, Integer> cart = new TreeMap<>(); // Adding elements in the cart map cart.put("Butter", 5); cart.put("Milk", 10); cart.put("Rice", 20); cart.put("Bread", 2); cart.put("Peanut", 2); // print synchronized map from TreeMap Map mapSynched = Collections.synchronizedMap(cart); System.out.println("Synchronized Map from TreeMap: " + mapSynched); } }
Synchronized Map from TreeMap: {Bread=2, Butter=5, Milk=10, Peanut=2, Rice=20}
首先,匯入「java.util」套件以啟用 TreeMap 類別。
然後,建立一個 TreeMap,其中鍵為 String 類型,值為 Integer type
使用內建方法「put()」在集合中儲存一些元素
現在,使用synchronizedMap()方法同步這些元素並將它們儲存在新的Map集合中。
最後,定義一個同步區塊。在此區塊內,採用 for-each 迴圈使用「keySet()」方法列印項目。
在下面的範例中,我們將使用synchronizedMap()方法和一個synchronized區塊來同步給定的TreeMap#
import java.util.*; public class Maps { public static void main(String[] args) { TreeMap<String, Integer> cart = new TreeMap<>(); // Adding elements in the cart map cart.put("Butter", 5); cart.put("Milk", 10); cart.put("Rice", 20); cart.put("Bread", 2); cart.put("Peanut", 2); // creating new synchronized Map Map<String, Integer> mapSynched = Collections.synchronizedMap(cart); System.out.println("Synchronized Map from TreeMap: " ); // printing synchronized map from TreeMap synchronized (mapSynched) { for (String unKey : mapSynched.keySet()) { System.out.println("Item: " + unKey + ", Quantity: " + cart.get(unKey)); } } } }
Synchronized Map from TreeMap: Item: Bread, Quantity: 2 Item: Butter, Quantity: 5 Item: Milk, Quantity: 10 Item: Peanut, Quantity: 2 Item: Rice, Quantity: 20
同步是在兩個或多個活動之間建立協調並確保正確溝通的過程。由於TreeMap不同步可能會導致資料不一致,因此我們需要對其進行同步。內建方法「Collections.synchronizedMap()」是執行此任務的更方便的方法。
以上是從 Java TreeMap 取得同步地圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!