HashMap သည် Java ဖြစ်သည်



HashMap ဂျာဗား ဂျာဗားမြေပုံ

ဂျာဗားရှိ HashMap Class သည်ဒေတာများကိုသိုလှောင်ထားသည် သော့ချက်တန်ဖိုး သော့ဒေတာထူးခြားတဲ့ဖြစ်သင့်ဘယ်မှာအားလုံးအတွက်။ သက်ဆိုင်ရာသော့ဒေတာကို အခြေခံ၍ တန်ဖိုးများကိုကျွန်ုပ်တို့ရယူနိုင်သည်။ HashMap သည် Java ၏ Collection Framework တွင်တည်ရှိပြီး java.util အထုပ်၏အစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည် Hashing နည်းစနစ်၏နိယာမတွင်အလုပ်လုပ်သည်။

ဂျာဗား HashMap အဆင့်ဆင့်

Java ရှိ HashMap အတန်းအစားကိုတိုးချဲ့သည် ြဒပ်မဲ့သော အတန်းအစား အကျဉ်းချုပ် နှင့်အကောင်အထည်ဖော်ဆောင်ရွက်လျက်ရှိသည် ေျမပုုံ အောက်မှာပြထားတဲ့အတိုင်း interface ကို။

ဂျာဗားရှိ HashMap

HashMap ဖွဲ့စည်းပုံနှင့်အလုပ်လုပ်အခြေခံ

Java ရှိ HashMap သည်နိယာမအားဖြင့်အလုပ်လုပ်သည် ဟေး နည်းပညာ။ hash မှာ HashMap ထဲမှာ key နဲ့ value ကို link လုပ်ဖို့ hash functions တွေကိုသုံးတယ်။ HashMap သည်သော့တန်ဖိုးတန်ဖိုးအားလုံးကိုပုံစံတစ်မျိုးဖြင့်သိုလှောင်သည် အခင်းအကျင်း တစ်ခုချင်းစီကို entry ကိုတစ်ပုံးအဖြစ်စဉ်းစားသည်အဘယ်မှာရှိ node များ။ ပုံးတစ်လုံးသည် array ထဲမှ element တစ်ခုဖြစ်သည်။ node တစ်ခုစီတွင်တန်ဖိုး ၃ ခုရှိသည်။ သော့, တန်ဖိုး၊ နှင့်လင့်ခ် လာမယ့် node ။ node ၁ ခုထက်ပိုသောတူညီသောအညွှန်းကိုမျှဝေပါက၎င်းသည်ချိတ်ဆက်ထားသောစာရင်းတစ်ခုဖြစ်သည်။ node တိုင်းသည် hashcode () ကို အသုံးပြု၍ တွက်ချက်သော bucket ရှိ index တစ်ခုသို့ဆက်စပ်နေသည်။

ဂျာဗားရှိ HashMap

HashMap စွမ်းဆောင်ရည်

Java ရှိ HashMap ၏စွမ်းဆောင်ရည်သည်အောက်ပါအချက်များပေါ်တွင်မူတည်သည်။

  • Initial Capacity - HashMap ကိုအစပျိုးလိုက်တာနဲ့သိုလှောင်နိုင်တဲ့ပမာဏဘယ်လောက်ရှိသလဲဆိုတာကိုဖော်ပြတယ်။ ပုံမှန်အားဖြင့်, ကဖြစ်ပါတယ် 16 သော့ချက်တန်ဖိုးအားလုံးအတွက်
  • Load Factor - ၎င်းသည်တိုးမြှင့်ရန်လိုအပ်သောစွမ်းရည်၏ရာခိုင်နှုန်းဖြစ်သည်။ ပုံမှန်အားဖြင့်, ကဖြစ်ပါတယ် 0.75
  • Threshold - ၎င်းသည် default factor ဖြစ်သော load factor နှင့် capacity တို့၏ထုတ်ကုန်ဖြစ်သည် 12 (၂၅၁၂ * ၁၅၂၀)
  • ပြန်လည်ပြုပြင်ခြင်း - ၎င်းသည်သတ်မှတ်ထားသောတန်ဖိုးသို့ရောက်ရှိပြီးနောက်စွမ်းရည်ကိုနှစ်ဆတိုးစေသောလုပ်ငန်းစဉ်ဖြစ်သည်။

ဂျာဗား HashMap ကြေငြာချက်

HashMap ကို Java တွင်သုံးရန်ကျွန်ုပ်တို့တင်သွင်းရမည် java.util.HashMap အထုပ်။ syntax ကိုအောက်တွင်ပေးထားသည်မှာ -

HashMap<KeyType,ValueType> map = new HashMap<>();

KeyType - ၎င်းသည်သော့ချက်အချက်အလက်အမျိုးအစားဖြစ်သည်.Eg: String သို့မဟုတ် Integer

ValueType - ဒါဟာတန်ဖိုးအချက်အလက်အမျိုးအစားဖြစ်တယ်။ ဥပမာ: String or Integer

HashMap ထူးခြားချက်များ

Java ရှိ HashMap ၏အင်္ဂါရပ်များမှာ -

  • key တစ်ခုစီနှင့်သက်ဆိုင်သောတန်ဖိုးများကိုသိုလှောင်သည်
  • ထူးခြားသောသော့များသာပါဝင်သည်
  • ထပ်ထားသောသော့များကိုခွင့်မပြုပါ၊ ထပ်ဆင့်တန်ဖိုးများရှိနိုင်သည်
  • မည်သည့်အမိန့်ကိုမဆိုထိန်းသိမ်းထားခြင်းမရှိပါ။ ဆိုလိုသည်မှာဒေတာကိုထည့်သွင်းသည့်အစဉ်သည်ပြန်လည်ထုတ်ယူသည့်အစဉ်နှင့်မတူပါ။
  • ၎င်းသည်ထပ်တူပြုခြင်းမဟုတ်ပါ

Java HashMap Class တည်ဆောက်သူများ

HashMap သည်အောက်ဖော်ပြပါဇယားတွင်တွေ့ရသည့်အတိုင်းကွဲပြားခြားနားသောတည်ဆောက်သူ ၄ ဦး ကိုထောက်ပံ့သည်။

လုပ်ငန်းခွင်ဖေါ်ပြချက်
HashMap ()ပုံမှန် HashMap ကိုအစပြုသည်
HashMap (မြေပုံ)Hashmap အားမြေပုံမီတာနှင့်စတင်သည်
HashMap (int စွမ်းရည်)သတ်မှတ်ထားသောစွမ်းရည်၏ကိန်းဂဏန်းနှင့်အတူ hashmap အစပြု
HashMap (int capacity, float loadfactor)သတ်မှတ်ထားသောစွမ်းရည်နှင့် loadfactor ဖြင့် hashmap ကိုအစပြုသည်

HashMap နည်းလမ်းများ

Java HashMap သည်အောက်ဖော်ပြပါဇယားတွင်ဖော်ပြထားသောနည်းလမ်းများနှင့် Map interface နှင့်သက်ဆိုင်သောနည်းလမ်းများအားလုံးကိုထောက်ပံ့သည်

နည်းလမ်းဖေါ်ပြချက်parameter
ရှင်းရှင်းလင်းလင်း ()ဤမြေပုံရှိမြေပုံအညွှန်းအားလုံးကိုဖယ်ရှားပြီးမြေပုံသည်ဗလာဖြစ်သည်
Object ကိုယ်ပွား ()ဤ HashMap ဥပမာ၏တိမ်ပိုင်းမိတ္တူကိုပြန်ပို့သည်။ သော့ချက်နှင့်တန်ဖိုးများသူတို့ကိုယ်သူတို့ပုံတူကူးယူကြသည်မဟုတ်
Boolean ပါဝင်သည်Key (Object key)သတ်မှတ်ထားသော key အတွက် mapping value ရှိလျှင် true return ပြန်သည်key - တန်ဖိုးကိုပြန်လည်ရယူရန်အတွက်သော့
Boolean ပါဝင်သည့်Value (Object value)သတ်မှတ်ထားသောတန်ဖိုးအတွက်သော့၏မြေပုံရှိလျှင် true ပြန်သည်value - သတ်မှတ်ထားတဲ့ key ကိုဆက်စပ်တဲ့တန်ဖိုး
သတ်မှတ်မည် entrySet ()မြေပုံ၏မြေပုံတစ်ခုအစုကိုမြင်သည်
Boolean ညီမျှခြင်း (Object o)အရာဝတ္ထုမြေပုံ၏တူညီသောမြေပုံရှိလျှင် true return ပြန်သည်o - နှိုင်းယှဉ်ခံရဖို့အရာဝတ္ထု
Integer get (Object key)မြေပုံရှိသတ်မှတ်ထားသောသော့၏တန်ဖိုးကို return လုပ်သည်။ မြေပုံမရှိပါက null return ပြန်သည်key - mapping value ကိုပြန်လည်ရယူရန်အတွက်သော့
Integer getOrDefault (Object key၊ Integer ပုံသေတန်ဖိုး)mapping လျှင်သတ်မှတ်ထားသော key ၏တန်ဖိုးကို return ပြန်ပါတယ်။ mapping မရှိလျှင် defaultvalue ကို return ပြန်ပေးသည်key - ကျွန်ုပ်တို့တန်ဖိုးထားတဲ့သော့ကိုပြန်ပေးရမယ်
defaultvalue - မြေပုံမရှိသောအခါပြန်လာရမည့်မူလတန်ဖိုး
int hashCode ()မြေပုံ၏ hashcode တန်ဖိုးကိုပြန်ပို့ပေးသည်
Boolean isEmpty ()Returns true မှာ hashmap မှာ key-value pair တွေမရှိဘူး
keySet ကိုသတ်မှတ်ပါ ()မြေပုံတွင်ရှိသောသော့များ၏သတ်မှတ်ထားပုံကိုပြန်ပို့သည်
Integer ထား (String သော့၊ int တန်ဖိုး)သော့ကိုတန်ဖိုးနှင့်ဆက်စပ်သည်။ အကယ်၍ သော့သည်ရှိပြီးသားဖြစ်ပါက၎င်းသည်တန်ဖိုးဟောင်းကိုတန်ဖိုးအသစ်နှင့်အစားထိုးလိုက်သည်သော့ - မြေပုံအတွက်သော့
value - သတ်မှတ်ထားတဲ့ key အတွက်တန်ဖိုး
ပျက်ပြယ် putAll (မြေပုံ))သော့ချက် - တန်ဖိုး mappings များအားလုံးကိုလက်ရှိမြေပုံနှင့်ဆက်စပ်ထားသည်m - လက်ရှိမြေပုံတွင်ထည့်ရန်မြေပုံ၏မိတ္တူ
Integer putIfAbsent (String သော့၊ Integer တန်ဖိုး)အခြားသော့နှင့် ဆက်စပ်၍ မရပါကတန်ဖိုးကိုဆက်စပ်သည်သော့ - မြေပုံအတွက်သော့
value ကို - ဆက်စပ်ခံရဖို့တန်ဖိုး
Integer ဖယ်ရှားခြင်း (Object key)မြေပုံရှိသတ်မှတ်ထားသောသော့အတွက်မြေပုံကိုဖယ်ရှားသည်key - မြေပုံတွင်ရှိသောသော့ကိုဖယ်ရှားရန်မြေပုံရှိသော့ချက်ဖြစ်သည်
Boolean ဖယ်ရှားခြင်း (Object key၊ Object value)သတ်မှတ်ထားသောတန်ဖိုးနှင့်ဆက်စပ်နေမှသာသတ်မှတ်ထားသောသော့၏ဝင်ပေါက်ကိုဖယ်ရှားသည်key - မြေပုံတွင်သော့ချက်
value - value ကို key နဲ့ဆက်စပ်ထားတယ်
Integer ကိုအစားထိုး (String key၊ Integer တန်ဖိုး)သတ်မှတ်ထားသောသော့၏တန်ဖိုးကိုလက်ရှိတန်ဖိုးအချို့နှင့်ဆက်စပ်နေမှသာတန်ဖိုးကိုအစားထိုးသည်key - မြေပုံတွင်သော့ချက်
value - အစားထိုးခံရဖို့တန်ဖိုး
Boolean replace (String key၊ integer oldvalue, Integer newvalue)သတ်မှတ်ထားသော key ၏ entry ကိုသူကသတ်မှတ်ထားသော oldvalue နှင့်ချိတ်ဆက်ပြီးမှသာတန်ဖိုးအသစ်ကိုအစားထိုးလိုက်သည်သော့ - မြေပုံထဲမှာသော့
oldvalue - keyval သို့ဆက်စပ်သော oldvalue
newvalue - သော့နှင့်ဆက်စပ်ရန် newvalue
int အရွယ်အစား ()မြေပုံ၏အရွယ်အစားကိုပြန်ပို့သည်
string toString ()မြေပုံ၏ string ကိုကိုယ်စားပြုမှုကိုပြန်သွားသည်
စုဆောင်းခြင်းတန်ဖိုးများ ()မြေပုံ၌ရှိသောတန်ဖိုးများ၏စုဆောင်းမှုအမြင်ပြန်လာသည်

HashMap ခြွင်းချက်များ

Java သည်အောက်ပါခြွင်းချက်များကိုချပစ်သည်။

  • ConcurrentModificationException
  • IllelgalMonitorStateException
  • NullPointerException
  • ကြားဖြတ်
  • IllegalArgumentException

HashMap တွင် Element များကိုထည့်ခြင်း

အောက်ဖော်ပြပါဥပမာအတိုင်းသင်ပထမ ဦး စွာ String type နှင့် Integer type ၏တန်ဖိုးနှင့်အတူ 'student' အမည်ရှိ HashMap ကိုဖန်တီးသည်။ ထို့နောက် key ကို အသုံးပြု၍ တစ် ဦး ချင်းစီကိုထည့်ပါ ထား နည်းလမ်း။ Output တွင် element များပြန်လည်ရယူသည့်အစီအစဉ်သည်၎င်းကိုထည့်သွင်းခဲ့သောအစဉ်နှင့်မတူကြောင်းသတိပြုမိနိုင်သည်။

နောက် stu လို့ခေါ်တဲ့ဒုတိယ HashMap ကိုဖန်တီးပြီးတော့ key-value pair 2 ကိုထည့်ပါ။ ၎င်းကို 'ကျောင်းသား' မြေပုံထဲသို့ထည့်ပြီးနောက် ထားဝယ် နည်းလမ်း။

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    HashMap<String,Integer> stu = new HashMap<>();
    stu.put("Ravi",110);
    stu.put("Tejas", 112);
    System.out.println("Elements in stu map:");
    System.out.println(stu);
    
    student.putAll(stu);
    
    System.out.println("Elements in student map after invoking putAll method:");
    System.out.println(student);
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
Elements in stu map:
{Ravi=110, Tejas=112}
Elements in student map after invoking putAll method:
{Dev=105, Ravi=110, Tejas=112, Banu=102, Rishi=108, Arthi=100}

မြေပုံတွင်သီးခြားသော့ (သို့) တန်ဖိုးတစ်ခုရှိမရှိစစ်ဆေးပါ

ကျနော်တို့ကိုသုံးပါ ပုဂံ သတ်သတ်မှတ်မှတ်သော့တစ်ခုသည်မြေပုံတွင်ရှိမနေကိုစစ်ဆေးရန်နည်းလမ်းဖြစ်သည်။ ဤကိစ္စတွင် Dev သည်လက်ရှိရှိနေပြီး၎င်းသည် true သို့ပြန်သွားသည်။

အလားတူပင် မန္တလေး တိကျတဲ့တန်ဖိုးကိုပစ္စုပ္ပန်လျှင်နည်းလမ်းစစ်ဆေးသည်။ ဤတွင် 102 ရှိသည်။ 110 မပါရှိသောကြောင့် false ကိုပြန်ပို့သည်။

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    System.out.println(student.containsKey("Dev"));
    System.out.println(student.containsKey("Ravi"));
    
    System.out.println(student.containsValue(102));
    System.out.println(student.containsValue(110));
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
true
false
true
false

key-value pair ကိုဖယ်ထုတ်ပြီးအစားထိုးပါ

ဤနေရာတွင် Java ၏ Integer နှင့် hashmap ကိုဖန်တီးသည် ကြိုး ဘာသာစကားများသိုလှောင်ရန်ရိုက်ပါ။ ဒုတိယတန်ဖိုးကိုဒေတာအသစ်တွေနဲ့အစားထိုးပြီးတိကျတဲ့ key-value pair ကိုမြေပုံမှာသုံးမယ်ဆိုရင် 2rd တန်ဖိုးကိုအစားထိုးလိုက်ပါတယ် အစားထိုး () နည်းလမ်း။

ထို့နောက် key ကို သုံး၍ 3rd element ကိုယူပြီး key ကို အသုံးပြု၍ 1st element ကိုဖယ်ထုတ်သည် ဖယ်ရှား () နည်းလမ်း။

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    lang.putIfAbsent(3, "C++");
    System.out.println(lang);
    
    lang.replace(2, "PHP");
    System.out.println(lang);
    
    lang.replace(3, "C++", "JavaScript");
    System.out.println(lang);
    
    lang.remove(3);
    System.out.println(lang);
    
    lang.remove(1, "Java");		
    System.out.println(lang);
    
    
  }

}
{1=Java, 2=C, 3=C++}
{1=Java, 2=PHP, 3=C++}
{1=Java, 2=PHP, 3=JavaScript}
{1=Java, 2=PHP}
{2=PHP}

ရှင်းလင်းသောနှင့်အချည်းနှီးသောနည်းလမ်းများဥပမာ

Java ရှိ HashMap သည် ရှင်းလင်းသော() မြေပုံရှိသော့ချက်တန်ဖိုးတန်ဖိုးများ၏မြေပုံကိုရှင်းလင်းရန်နည်းလမ်းနှင့် ဘာမှမရှိပါ မြေပုံဗလာလျှင်နည်းလမ်းကိုစစ်ဆေးသည်။ မြေပုံသည်ရှင်းလင်းသော () နည်းလမ်းကိုသုံးပြီးမြေပုံ၌အဓိကတန်ဖိုးအတွဲများမရှိသောကြောင့်မြေပုံသည်လက်ရှိနှင့်ဒုတိယရလဒ်မှာမှန်သည်။

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    
    System.out.println(lang.isEmpty());
    lang.clear();
    
    System.out.println(lang.isEmpty());
    
  }

}
false
true

entrySet ကိုအသုံးပြုပြီး HashMap element များမှတဆင့်ကြားဖြတ်

ဂျာဗားရှိ HashMap ၏သော့တန်ဖိုးတန်ဖိုးတစ်ခုစီကိုရယူရန်၎င်းကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည် .ရာဝတီ နှင့်အတူ HashMap ၏နည်းလမ်း entry တစ် ဦး ကိုအသုံးပြုပြီးမြေပုံ interface ကို၏နည်းလမ်း for-တစ်ခုချင်းစီကိုကွင်းဆက်။ မြေပုံမျက်နှာပြင်၏ Entry နည်းလမ်းတွင်ထိုကဲ့သို့သောစနစ်များပါ ၀ င်သည် geyKey () သော့ကိုရရန်နှင့် getValue () သက်ဆိုင်ရာတန်ဖိုးကိုရဖို့။ ကျနော်တို့ကိုသုံးနိုင်သည် အရွယ်အစား () မြေပုံ၏အရွယ်အစားကိုရရှိရန်နည်းလမ်း။

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Size of map is : " + cityState.size());
    
    for(Map.Entry<String,String> m : cityState.entrySet())
    {
      System.out.println(m.getKey() + " : " + m.getValue());
    }

  }

}
Size of map is : 4
Chennai : TamilNadu
Madurai : TamilNadu
Mumbai : Maharashtra
Bangalore : Karnataka

keySet () နှင့် values ​​() ကို အသုံးပြု၍ element များမှဖြတ်သန်းပါ။

Hashmap ဒြပ်စင်များမှတစ်ဆင့်ကွင်းဆက်ရန်နောက်ထပ်နည်းလမ်းမှာ - ကိုအသုံးပြုခြင်းဖြစ်သည် keySet () နည်းလမ်း။ ဤအရာကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အောက်ဖော်ပြပါဥပမာတွင်တွေ့ရသည့်အတိုင်းသော့အားလုံး၏သီးခြားစီကိုသီးခြားစီရရှိနိုင်သည်။ တန်ဖိုးအားလုံးကိုသီးခြားစီရရှိရန်ကျွန်ုပ်တို့သည်၎င်းကိုသုံးနိုင်သည် တန်ဖိုးများ () method နှင့်သူတို့ကိုကွင်းဆက်အတွက်သူတို့ကို print ထုတ်။

keySet ကိုအသုံးပြုခြင်းအားဖြင့်၊ loop တန်ဖိုးကိုတွဲခြင်းအားဖြင့် loop အတွက် iterating အားဖြင့် key value value များကိုလည်း print ထုတ်နိုင်ပါတယ် ရ () သက်ဆိုင်ရာတန်ဖိုးများကိုရဖို့နည်းလမ်း။

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Printing only keys:");
    for(String s : cityState.keySet())
    {
      System.out.println(s);
    }
    System.out.println();
    System.out.println("Printing only values: ");
    for(String c : cityState.values())
    {
      System.out.println(c);
    }
    System.out.println();
    System.out.println("Printing both key-value pairs:");
    for(String v : cityState.keySet())
    {
      System.out.println("Key: " + v + " | value: " + cityState.get(v));
    }
  }

}
Printing only keys:
Chennai
Madurai
Mumbai
Bangalore

Printing only values: 
TamilNadu
TamilNadu
Maharashtra
Karnataka

Printing both key-value pairs:
Key: Chennai | value: TamilNadu
Key: Madurai | value: TamilNadu
Key: Mumbai | value: Maharashtra
Key: Bangalore | value: Karnataka

ကောက်ချက်

ဤသင်ခန်းစာတွင်၊ HashMap နှင့်၎င်း၏ကွဲပြားခြားနားသောနည်းလမ်းများနှင့်ဥပမာအမျိုးမျိုးကိုလေ့လာခဲ့သည်။

အညွှန်း