首頁  >  文章  >  Java  >  從 Java TreeMap 取得同步地圖

從 Java TreeMap 取得同步地圖

WBOY
WBOY轉載
2023-09-02 16:41:021185瀏覽

从 Java TreeMap 获取同步地图

要從 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 類型的變數中。

  • 最後,列印新的同步地圖並退出。

範例 1

下面的範例說明如何使用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()」方法列印項目。

範例2

在下面的範例中,我們將使用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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除