Rumah  >  Artikel  >  Java  >  Dapatkan peta disegerakkan daripada Java TreeMap

Dapatkan peta disegerakkan daripada Java TreeMap

WBOY
WBOYke hadapan
2023-09-02 16:41:021227semak imbas

从 Java TreeMap 获取同步地图

Untuk mendapatkan Peta yang disegerakkan daripada TreeMap di Java, kita boleh menggunakan kaedah terbina dalam "synchronizedMap()" antara muka Koleksi. Di sini, TreeMap ialah kelas yang digunakan untuk melaksanakan antara muka NavigableMap. Ia menyimpan elemen peta dalam struktur pokok. Ia menyediakan alternatif yang cekap untuk menyimpan pasangan nilai kunci dalam susunan yang disusun. Secara lalai, TreeMap tidak disegerakkan. Dalam artikel ini, kami akan menerangkan keperluan penyegerakan dan pelaksanaan praktikalnya melalui program sampel.

Peta peta pokok disegerakkan

Treemap tidak selamat untuk benang, yang bermaksud apabila kami melaksanakannya dalam persekitaran berbilang benang, berbilang benang boleh mengakses dan mengubah suainya secara serentak tanpa sebarang penyelarasan. Ini boleh membawa kepada ketidakkonsistenan data dan tingkah laku unsur yang tidak dijangka. Ia juga boleh menjejaskan hasil operasi.

Oleh itu, kita perlu menggunakan synchronizedMap() untuk menyegerakkan akses kepada elemen TreeMap. Kaedah ini mencipta pembalut di sekeliling TreeMap asal dan menguncinya apabila benang cuba mengakses atau mengubah suainya.

synchronizedMap() ialah kaedah statik kelas Koleksi yang mengambil contoh koleksi TreeMap sebagai parameter dan mengembalikan Peta yang disegerakkan daripadanya.

Tatabahasa

Collections.synchronizedMap(instanceOfTreeMap);

Di sini, "Koleksi" ialah kelas antara muka koleksi.

Sintaks umum

TreeMap adalah seperti berikut -

Tatabahasa

TreeMap<TypeOfKey, TypeOfValue> nameOfMap = new TreeMap<>();

Kaedah

  • Mula-mula, import pakej "java.util" untuk mendayakan kelas TreeMap.

  • Kemudian, buat TreeMap di mana kunci adalah jenis String dan nilainya adalah Jenis integer.

  • Gunakan kaedah terbina dalam "put()" untuk menyimpan beberapa elemen dalam koleksi

  • Sekarang, segerakkan elemen ini dan simpannya dalam pembolehubah jenis Peta.

  • Akhir sekali, cetak peta disegerakkan baharu dan keluar.

Contoh 1

Contoh berikut menggambarkan cara menggunakan synchronizedMap() untuk menyegerakkan TreeMap yang ditentukan.

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);
   }
}

Output

Synchronized Map from TreeMap: {Bread=2, Butter=5, Milk=10, Peanut=2, Rice=20}

Kaedah

  • Mula-mula, import pakej "java.util" untuk mendayakan kelas TreeMap.

  • Kemudian, buat TreeMap di mana kuncinya adalah jenis String dan nilainya adalah jenis Integer

  • Gunakan kaedah terbina dalam "put()" untuk menyimpan beberapa elemen dalam koleksi

  • Sekarang, gunakan kaedah synchronizedMap() untuk menyegerakkan elemen ini dan menyimpannya dalam koleksi Peta baharu.

  • Akhir sekali, tentukan blok penyegerakan. Dalam blok ini, item dicetak menggunakan kaedah "keySet()" menggunakan gelung untuk setiap.

Contoh 2

Dalam contoh berikut, kami akan menggunakan kaedah synchronizedMap() dan blok synchronized untuk menyegerakkan TreeMap yang diberikan

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));
         }
      }
   }
}

Output

Synchronized Map from TreeMap:
Item: Bread, Quantity: 2
Item: Butter, Quantity: 5
Item: Milk, Quantity: 10
Item: Peanut, Quantity: 2
Item: Rice, Quantity: 20

Kesimpulan

Penyegerakan ialah proses mewujudkan penyelarasan dan memastikan komunikasi yang betul antara dua atau lebih aktiviti. Memandangkan TreeMap di luar penyegerakan boleh membawa kepada ketidakkonsistenan data, kami perlu menyegerakkannya. Kaedah terbina dalam "Collections.synchronizedMap()" ialah cara yang lebih mudah untuk melaksanakan tugas ini.

Atas ialah kandungan terperinci Dapatkan peta disegerakkan daripada Java TreeMap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam