首頁 > Java > java教程 > 從 Java TreeMap 取得同步地圖

從 Java TreeMap 取得同步地圖

WBOY
發布: 2023-09-02 16:41:02
轉載
1252 人瀏覽過

从 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。

< /h3>
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< /p>

#
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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板