Java-da ConcurrentMap


JavaBaxılıb 81

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Bu yazıda Java-da ConcurrentMap-i oxuyacağıq.

Java-da ConcurrentMapPin

Java ConcurrentMap interfeysi

Java-dakı ConcurrentMap interfeysi, birdən çox mövzuya xəritəyə daxil olmağa imkan verən senkronize edilmiş bir xəritədir. Mövzuyla təhlükəsizdir və xəritə elementlərinin tutarlılığını təsir etmir. Bu hissəsidir java.util.concurrent paket və JDK 1.5-dən etibarən mövcuddur. ConcurrentMap interfeysi genişləndirir Xəritə interfeysi.

ConcurrentMap tətbiq edən siniflər

Java-da ConcurrentMap bir interfeysdir və buna görə metodlarını tətbiq etmək üçün dərslər tələb olunur. Bunun üçün ya ConcurrentSkipListMap ya da ConcurrentHashMap istifadə edə bilərik.

Java-da ConcurrentMapPin

Java-da ConcurrentMap metodları

Aşağıda ConcurrentMap-da mövcud olan metodlar verilmişdir interface Java-da. Həm də Xəritə interfeysində mövcud olan bütün əsas metodları idxal edir.

Üsultəsvir
Obyekt hesablaması (Obyekt açarı, BiFunction remappingFunction)Göstərilən açarın dəyərlə uyğunlaşdırılması cəhdləri
Object computeIfAbsent (obyekt açarı, BiFunction remappingFunction)Göstərilən açarın heç bir dəyəri olmadığı təqdirdə xəritələşdirmə cəhdləri
Object computeIfPresent (obyekt açarı, BiFunction remappingFunction)Göstərilən açarın artıq bir dəyərlə əlaqələndirildiyi təqdirdə xəritələşdirmə cəhdləri
void forEach (BiAction hərəkəti)Xəritədəki bütün elementlər üçün göstərilən əməliyyatı həyata keçirir
Obyekt getOrDefault (obyekt açarı, obyekt defaultValue)Başqa bir halda göstərilən standart dəyəri qaytararsa, göstərilən açarın dəyərini qaytarır
Obyekt birləşməsi (Obyekt açarı, Obyekt dəyəri, BiFunction remappingFunction)Əvvəlki heç bir dəyəri yoxdursa, göstərilən açar üçün göstərilən dəyəri əlaqələndirir
Obyekt putIfAbsent (Obyekt açarı, Obyekt dəyəri)Göstəriləni, heç bir dəyəri yoxdursa, müəyyən edilmiş dəyəri ilə əlaqələndirir
boolean aradan qaldırılması (obyekt açarı, obyekt dəyəri)Göstərilən düymənin göstərilən dəyəri varsa, xüsusi girişi silir
Obyekt dəyişdirin (Obyekt açarı, Obyekt dəyəri)Göstərilən düymə varsa, yeni dəyərlə əvəzlənir
Obyekt dəyişdirin (Object key, Object oldValue, Object newValue)Göstərilən düymənin girişini yeni dəyərlə əvəz edir
void replaceAll (BiFunction funksiyası)Verilən funksiyanı istifadə edərək xəritədəki bütün girişləri dəyişdirir

Nümunə: Java-da ConcurrentMap-də elementlər daxil edin

İstifadə edərək Java ConcurrentMap-yə elementlər əlavə edə bilərik put() metod. Girişləri əsas dəyər cütü kimi əlavə edə bilərik. Bu nümunə, bir Integer-String-i açar dəyər cütü kimi necə əlavə edəcəyimizi göstərir. The putIfAbsent() göstərilən düymə üçün heç bir dəyər eşleme olmadığı təqdirdə giriş giriş əlavə edir.

import java.util.concurrent.*;

public class ConcurrentMapDemo {

  public static void main(String[] args) {
    ConcurrentMap<Integer,String> cm = new ConcurrentHashMap<Integer,String>();
    cm.put(111, "Aarthi");
    cm.put(222, "Banu");
    cm.put(333, "Chetan");
    
    cm.putIfAbsent(444, "Devi");
    
    System.out.println(cm);
  }

}
{444=Devi, 333=Chetan, 222=Banu, 111=Aarthi}

Misal: Elementləri silin

Aşağıdakı nümunə Java-da ConcurrentMap-dən elementlərin necə silinəcəyini göstərir. Bunun üçün istifadə edə bilərik remove() yalnız açar və ya hər iki açar dəyəri göstərilərək metod. Hər iki açar dəyərini remove() üsul, xüsusi bir dəyər dəyəri eşleme mövcud deyil, göstərilən düymə ilə girişi silmir.

import java.util.concurrent.*;

public class ConcurrentMapDemo {

  public static void main(String[] args) {
    ConcurrentMap<Integer,String> cm = new ConcurrentHashMap<Integer,String>();
    System.out.println("Insert elements...");
    cm.put(111, "Aarthi");
    cm.put(222, "Banu");
    cm.put(333, "Chetan");
    
    cm.putIfAbsent(444, "Devi");
    
    System.out.println(cm);
    
    System.out.println("Removing elements...");
    cm.remove(222);
    cm.remove(333, "Chetan");
    System.out.println(cm);
  }

}
Insert elements...
{444=Devi, 333=Chetan, 222=Banu, 111=Aarthi}
Removing elements...
{444=Devi, 111=Aarthi}

Nümunə: Giriş elementləri

Aşağıdakı nümunə ConcurrentMap-dən fərqli elementlərə necə daxil olacağını göstərir. The get() metod göstərilən açarın dəyərini qaytarır. The getOrDefault() metodu göstərilən açarın dəyərini qaytarırsa, indiki dəyəri qaytararsa. Göstərilən düymənin istifadə edərək mövcud olub olmadığını da yoxlaya bilərik containsKey() və istifadə olunan göstərici containsValue() metod. Başqa bir şey yalnış qayıdırsa doğrudur.

import java.util.concurrent.*;

public class ConcurrentMapDemo {

  public static void main(String[] args) {
    ConcurrentMap<Integer,String> cm = new ConcurrentHashMap<Integer,String>();
    System.out.println("Insert elements...");
    cm.put(111, "Aarthi");
    cm.put(222, "Banu");
    cm.put(333, "Chetan");
    
    cm.putIfAbsent(444, "Devi");
    
    System.out.println(cm);
    
    System.out.println(cm.get(111));
    System.out.println(cm.getOrDefault(555, "Default"));
    System.out.println(cm.getOrDefault(333, "Default"));
    System.out.println(cm.containsKey(222));
    System.out.println(cm.containsKey(555));
    System.out.println(cm.containsValue("Banu"));
    System.out.println(cm.containsValue("Eesha"));
    
  }

}
Insert elements...
{444=Devi, 333=Chetan, 222=Banu, 111=Aarthi}
Aarthi
Default
Chetan
true
false
true
false

Misal: elementləri təkrarlamaq

ConcurrentMap-dəki bütün elementləri inputSet üzərində təkrarlayıcı istifadə edərək təkrarlaya bilərik. İstifadə getKey() üsulu, açarı və istifadə edərək ala bilərik getValue() üsul, dəyəri ala bilərik. Biz də düymələri tək istifadə edərək istifadə edə bilərik keySet() və dəyərləri values() metodu.

import java.util.Iterator;
import java.util.concurrent.*;

public class ConcurrentMapDemo {

  public static void main(String[] args) {
    ConcurrentMap<Integer,String> cm = new ConcurrentHashMap<Integer,String>();
    cm.put(111, "Aarthi");
    cm.put(222, "Banu");
    cm.put(333, "Chetan");
    
    cm.putIfAbsent(444, "Devi");
    
    Iterator<ConcurrentHashMap.Entry<Integer,String>> it = cm.entrySet().iterator();
    while(it.hasNext()) {
      ConcurrentHashMap.Entry<Integer,String> e = it.next();
      System.out.println("Key:" + e.getKey() + " " + "Value: " + e.getValue());
    }

    System.out.println("Key Set: " + cm.keySet());
    System.out.println("Values: " + cm.values());
      
  }

}
Key:444 Value: Devi
Key:333 Value: Chetan
Key:222 Value: Banu
Key:111 Value: Aarthi
Key Set: [444, 333, 222, 111]
Values: [Devi, Chetan, Banu, Aarthi]

Misal: Elementləri dəyişdirin

Bu nümunə. İstifadə edərək elementlərin dəyişdirilməsini göstərir replace() metod. Köhnə dəyəri göstərilən açar üçün göstərilən yeni dəyərlə əvəz edir.

import java.util.Iterator;
import java.util.concurrent.*;

public class ConcurrentMapDemo {

  public static void main(String[] args) {
    ConcurrentMap<Integer,String> cm = new ConcurrentHashMap<Integer,String>();
    System.out.println("Insert elements...");
    cm.put(111, "Aarthi");
    cm.put(222, "Banu");
    cm.put(333, "Chetan");
    
    cm.putIfAbsent(444, "Devi");
    System.out.println(cm);
    
    cm.replace(222, "Bharati");
    cm.replace(333, "Chetan", "Chitra");
    System.out.println("Elements after replace operation:");
    System.out.println(cm);
    
  }

}
Insert elements...
{444=Devi, 333=Chetan, 222=Banu, 111=Aarthi}
Elements after replace operation:
{444=Devi, 333=Chitra, 222=Bharati, 111=Aarthi}

 

arayış İstinad2

Crack Sistemi Dizayn Müsahibələri
Translate »
1