හැෂ්මැප් ක්‍රම ජාවා



හැෂ්මැප් ජාවා ජාවා සිතියම

ජාවා හි හැෂ්මැප් පන්තිය දත්ත ස්වරූපයෙන් ගබඩා කරයි යතුරු අගය යතුරු දත්ත අද්විතීය විය යුතු යුගල. අනුරූප යතුරු දත්ත මත පදනම්ව අපට අගයන්ට ප්‍රවේශ විය හැකිය. හැෂ්මැප් ජාවා හි එකතු කිරීමේ රාමුව තුළ ඇති අතර එය java.util පැකේජයේ කොටසකි. එය හැෂින් තාක්ෂණයේ මූලධර්මය මත ක්රියා කරයි.

ජාවා හැෂ්මැප් ධූරාවලිය

ජාවා හි හැෂ්මැප් පන්තිය දීර් s කරයි වියුක්ත පන්තිය සාරාංශ සිතියම සහ ක්‍රියාත්මක කරයි සිතියම පහත දැක්වෙන පරිදි අතුරු මුහුණත.

ජාවා හි හැෂ්මැප්

හැෂ්මැප් ව්‍යුහය සහ වැඩ කිරීමේ මූලධර්මය

ජාවා හි හැෂ්මැප් වැඩ කරන්නේ මූලධර්මය මත ය හැෂිං තාක්ෂණය. හැෂිං කිරීමේදී, අපි හැෂ්මැප් එකක යතුර සහ අගය සම්බන්ධ කිරීමට හැෂ් කාර්යයන් භාවිතා කරමු. හැෂ්මැප් යතුරු අගය යුගල වශයෙන් a ආකාරයෙන් ගබඩා කරයි අරාව සෑම ප්‍රවේශයක්ම බාල්දියක් ලෙස සලකන නෝඩ් වල. බාල්දියක් යනු අරාවෙහි මූලද්‍රව්‍යයක් මිස අන් කිසිවක් නොවේ. සෑම නෝඩයකම අගයන් 3 ක් ඇත: යතුර, අගය, සහ සබැඳිය ඊලඟ node. 1 නෝඩ් එකකට වඩා එකම දර්ශකය බෙදා ගත් විට, එය සම්බන්ධිත ලැයිස්තුවක් නියෝජනය කරයි. සෑම නෝඩයක්ම බාල්දියේ දර්ශකයකට සිතියම් ගත කර ඇති අතර එය හැෂ්කෝඩ් () භාවිතයෙන් ගණනය කෙරේ.

ජාවා හි හැෂ්මැප්

හැෂ්මැප් කාර්ය සාධනය

ජාවා හි හැෂ්මැප් හි ක්‍රියාකාරිත්වය පහත පරාමිතීන් මත රඳා පවතී:

  • ආරම්භක ධාරිතාව - එය ආරම්භ කරන විට හැෂ්මැප් බාල්දි කීයක් ගබඩා කළ හැකිදැයි දක්වයි. පෙරනිමියෙන්, එය 16 යතුරු අගය යුගල
  • පැටවීමේ සාධකය - එය වැඩි කළ යුතු ධාරිතාවේ ප්‍රතිශතයයි. පෙරනිමියෙන්, එය 0.75
  • සීමාව - මෙය පෙරනිමි අගය වන බර සාධකය සහ ධාරිතාවේ product ලයකි 12 (16 * 0.75)
  • නැවත සකස් කිරීම - මෙය එළිපත්ත අගයට ළඟා වූ පසු ධාරිතාව දෙගුණ කිරීමේ ක්‍රියාවලියයි.

ජාවා හැෂ්මැප් ප්‍රකාශනය

ජාවා හි හැෂ්මැප් භාවිතා කිරීමට, අප ආනයනය කළ යුතුය java.util.HashMap පැකේජය. සින්ටැක්ස් පහත පරිදි වේ:

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

යතුරු ටයිප් - එය යතුරු දත්ත වර්ගයයි.Eg: නූල් හෝ පූර්ණ සංඛ්‍යා

අගය ටයිප් - එය වටිනාකම් දත්ත වර්ගයයි. උදා: නූල් හෝ පූර්ණ සංඛ්‍යා

හැෂ්මැප් විශේෂාංග

ජාවා හි හැෂ්මැප් හි විශේෂාංග පහත දැක්වේ:

  • එක් එක් යතුරට අනුරූප අගයන් ගබඩා කරයි
  • අද්විතීය යතුරු පමණක් අඩංගු වේ
  • අනුපිටපත් යතුරු වලට ඉඩ නොදෙන නමුත් අනුපිටපත් අගයන් තිබිය හැක
  • එය කිසිදු අනුපිළිවෙලක් පවත්වා ගෙන යන්නේ නැත, එයින් අදහස් වන්නේ දත්ත ඇතුළත් කළ අනුපිළිවෙල එය ලබා ගත් අනුපිළිවෙලට සමාන නොවන බවයි.
  • එය සමමුහුර්ත නොවේ

ජාවා හැෂ්මැප් පන්තියේ ඉදිකිරීම්කරුවන්

පහත වගුවේ ඔබට පෙනෙන පරිදි හැෂ්මැප් විවිධ ඉදිකිරීම්කරුවන් 4 දෙනෙකුට සහාය දක්වයි:

ඉදිකිරීම්කරුවිස්තර
හැෂ්මැප් ()සුපුරුදු හැෂ්මැප් ආරම්භ කරයි
හැෂ්මැප් (සිතියම්)සිතියම් m හි මූලද්‍රව්‍ය සමඟ හැෂ්මාප් ආරම්භ කරයි
හැෂ්මැප් (int ධාරිතාව)නිශ්චිත ධාරිතා නිඛිල අගය සමඟ හැෂ්මැප් ආරම්භ කරයි
හැෂ්මැප් (int ධාරිතාව, පාවෙන පැටවුම් කාරකය)නිශ්චිත ධාරිතාව සහ පැටවුම් කාරකය සමඟ හැෂ්මැප් ආරම්භ කරයි

හැෂ්මැප් ක්‍රම

පහත වගුවේ සඳහන් කර ඇති ක්‍රම සමඟ ජාවා හැෂ්මැප් සිතියම් අතුරුමුහුණතට අයත් සියලුම ක්‍රම සඳහා සහය දක්වයි

ක්රමයවිස්තරපරාමිතිය
void clear ()මෙම සිතියමේ ඇති සියලුම සිතියම් ඉවත් කරයි, එයින් අදහස් වන්නේ සිතියම හිස් වනු ඇති බවයි
වස්තු ක්ලෝන ()මෙම හැෂ්මැප් සිද්ධියේ නොගැඹුරු පිටපතක් ලබා දෙයි. යතුර සහ අගයන් ක්ලෝන කර නැත
බූලියන්හි කේ (වස්තු යතුර) අඩංගු වේනිශ්චිත යතුර සඳහා සිතියම්කරණ අගයක් තිබේ නම් සත්‍ය වේයතුර - අපට අගය ලබා ගැනීමට අවශ්‍ය යතුර
බූලියන් වලංගු අගය (වස්තු වටිනාකම)නිශ්චිත අගය සඳහා යතුර සිතියම්ගත කිරීමක් තිබේ නම් සත්‍ය වේඅගය - නිශ්චිත යතුර සිතියම් ගත කළ අගය
සකසන්න entrySet ()සිතියම සිතියම්ගත කිරීම පිළිබඳ කට්ටල දර්ශනයක් ලබා දෙයි
බූලියන් සමාන (වස්තුව o)සිතියමේ සිතියම්ගත කිරීම වස්තුවට තිබේ නම් සත්‍ය වේo - සැසඳිය යුතු වස්තුව
පූර්ණ සංඛ්‍යා ලබා ගැනීම (වස්තු යතුර)සිතියමේ නිශ්චිත යතුරේ අගය ලබා දෙයි. සිතියම්ගත කිරීමක් නොමැති නම් එය ශුන්‍ය වේයතුර - අගය සිතියම් ගත කළ යුතු යතුර
පූර්ණ සංඛ්‍යා getOrDefault (වස්තු යතුර, පූර්ණ සංඛ්‍යා පෙරනිමි අගය)සිතියම්ගත කර ඇත්නම් නිශ්චිත යතුරේ අගය ලබා දෙයි, නැතිනම් සිතියම්ගත කිරීමක් නොමැති නම් පෙරනිමි අගය ලබා දෙයියතුර - අප අගය කරන යතුර ආපසු ලබා දිය යුතුය
defaultvalue - සිතියම්ගත කිරීමක් නොමැති විට ආපසු ලබා දිය යුතු පෙරනිමි අගය
int hashCode ()සිතියමේ හැෂ් කේත අගය ලබා දෙයි
බූලියන් isEmpty ()සත්‍යය වන්නේ හැෂ්මැප් සතුව යතුරු-වටිනා යුගල නොමැති බවයි
KeySet () සකසන්නසිතියමේ ඇති යතුරු වල කට්ටල දර්ශනය ලබා දෙයි
පූර්ණ සංඛ්‍යා (සංගීත යතුර, int අගය)යතුර අගය සමඟ සම්බන්ධ කරයි. යතුර දැනටමත් තිබේ නම්, එය පැරණි අගය නව අගයකින් ආදේශ කරයියතුර - සිතියම්ගත කිරීම සඳහා යතුර
අගය - නිශ්චිත යතුර සඳහා වටිනාකම
void putAll (සිතියම m)M හි සියලුම යතුරු අගය සිතියම්ගත කිරීම් වත්මන් සිතියමට සම්බන්ධ කරයිm - වත්මන් සිතියමට එකතු කළ යුතු සිතියම්වල පිටපත්
Integer putIfAbsent (නූල් යතුර, පූර්ණ අගය)යතුර සමඟ දැනටමත් සිතියම් ගත කර නොමැති නම් අගය ඇසුරු කරයියතුර - සිතියම්ගත කිරීම සඳහා යතුර
අගය - සම්බන්ධ කළ යුතු අගය
පූර්ණ සංඛ්‍යා ඉවත් කිරීම (වස්තු යතුර)සිතියමේ නිශ්චිත යතුර සඳහා සිතියම්කරණය ඉවත් කරයියතුර - සිතියම ඉවත් කළ යුතු සිතියමේ යතුර
බූලියන් ඉවත් කිරීම (වස්තු යතුර, වස්තු වටිනාකම)නිශ්චිත යතුර ඇතුල් කිරීම ඉවත් කරන්නේ එය නිශ්චිත අගය සමඟ සිතියම් ගත කළහොත් පමණියතුර - සිතියමේ යතුර
අගය - යතුරට සිතියම් ගත කළ අගය
පූර්ණ සංඛ්‍යා ප්‍රතිස්ථාපනය (සංගීත යතුර, පූර්ණ අගය)නිශ්චිත යතුරේ අගය අගය සමඟ ප්‍රතිස්ථාපනය කරන්නේ එය දැනට යම් අගයක් සමඟ සිතියම් ගත කර ඇත්නම් පමණියතුර - සිතියමේ යතුර
අගය - ප්‍රතිස්ථාපනය කළ යුතු අගය
බූලියන් ප්‍රතිස්ථාපනය (නූල් යතුර, පූර්ණ සංඛ්‍යා පැරණි අගය, පූර්ණ සංඛ්‍යා නව අගය)නිශ්චිත යතුර ඇතුල් කිරීම නව අගයකින් ප්‍රතිස්ථාපනය කරයි, එය දැනටමත් නිශ්චිත පැරණි අගය සමඟ සිතියම් ගත කර ඇත්නම් පමණියතුර - සිතියමේ යතුර
oldvalue - oldvalue යතුරට සිතියම් ගත කර ඇත
newvalue - යතුරට සිතියම් ගත කළ යුතු නව අගය
int ප්‍රමාණය ()සිතියමේ ප්‍රමාණය ලබා දෙයි
String toString ()සිතියමේ තන්තු නිරූපණයක් ලබා දෙයි
එකතු කිරීමේ අගයන් ()සිතියමේ ඇති අගයන් පිළිබඳ එකතු කිරීමේ දර්ශනයක් ලබා දෙයි

හැෂ්මැප් ව්‍යතිරේක

එය ජාවා හි පහත ව්‍යතිරේකයන් විසි කරයි:

  • සමගාමී විකරණය
  • IllelgalMonitorStateException
  • NullPointer ව්‍යතිරේකය
  • බාධා කිරීම්
  • නීති විරෝධී ආරෝපණ

හැෂ්මැප් වෙත මූලද්‍රව්‍ය එකතු කිරීම

පහත උදාහරණයෙන් ඔබට දැකිය හැකි පරිදි, පළමුවෙන්ම අපි 'ශිෂ්‍යයා' නමින් හැෂ්මැප් එකක් සාදන්නෙමු. ඉන්පසු අපි තනි යතුරු අගයන් යුගල එකතු කරමු දාන්න ක්‍රමය. මූලද්‍රව්‍ය ලබා ගත් අනුපිළිවෙල එය ඇතුළු කළ අනුපිළිවෙලට සමාන නොවන බව ප්‍රතිදානයේ ඔබට දැකගත හැකිය.

ඊළඟට, අපි 'ස්ටූ' නමින් දෙවන හැෂ්මැප් නිර්මාණය කර යතුරු-වටිනා යුගල 2 ක් එකතු කරමු. මෙය අපි පසුව ශිෂ්‍ය සිතියමට එකතු කරමු putAll ක්රමයකි.

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}

සිතියමේ නිශ්චිත යතුරක් හෝ අගයක් තිබේදැයි පරීක්ෂා කරන්න

අපි පාවිච්චි කරන්නේ අඩංගු වේ නිශ්චිත යතුරක් සිතියමේ තිබේදැයි පරීක්ෂා කිරීමේ ක්‍රමය. මෙම අවස්ථාවේ දී, දේව් සිටින අතර එබැවින් එය සත්‍යයක් වන අතර රවී නොමැති අතර එම නිසා අසත්‍යය නැවත ලබා දේ.

ඒ හා සමානව, අගය අඩංගු වේ නිශ්චිත අගයක් තිබේදැයි ක්‍රමය පරීක්ෂා කරයි. මෙන්න, 102 ක් ඇති නමුත් 110 ක් නොපවතින අතර එම නිසා අසත්‍යය නැවත ලබා දේ.

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

යතුරු අගය යුගලයක් ඉවත් කර ප්‍රතිස්ථාපනය කරන්න

මෙන්න, අපි ජාවා හි ඉන්ටර්ජර් හි හැෂ්මැප් එකක් නිර්මාණය කරමු String භාෂා ගබඩා කිරීමට ටයිප් කරන්න. අපි 2 වන අගය නව දත්ත සමඟ ප්‍රතිස්ථාපනය කර නිශ්චිත යතුරු අගය යුගලය සිතියමෙහි තිබේ නම් 3 වන අගය ප්‍රතිස්ථාපනය කරමු ආදේශ කරන්න () ක්රමයකි.

ඉන්පසුව, අපි යතුර භාවිතයෙන් 3 වන මූලද්‍රව්‍යය ඉවත් කර යතුරු අගය භාවිතා කරමින් 1 වන මූලද්‍රව්‍යය ඉවත් කරමු ඉවත් කරන්න () ක්රමයකි.

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}

පැහැදිලි හා හිස් ක්‍රම සඳහා උදාහරණය

ජාවා හි හැෂ්මැප් භාවිතා කරයි පැහැදිලිව() සිතියමේ යතුරු අගය යුගල සිතියම්ගත කිරීම ඉවත් කිරීමේ ක්‍රමය සහ හිස් සිතියම හිස් දැයි ක්‍රමය පරීක්ෂා කරයි. සිතියම්ගත කිරීම පවතින බැවින් 1 වන ප්‍රතිදානය සාවද්‍ය වන අතර පැහැදිලි () ක්‍රමය ක්‍රියාත්මක කිරීමෙන් පසු සිතියමට යතුරු-වටිනා යුගල නොමැති බැවින් 2 වන ප්‍රතිදානය සත්‍ය වේ.

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 භාවිතා කරමින් හැෂ්මැප් අංග හරහා අනුකරණය කිරීම

ජාවා හි හැෂ්මැප් හි තනි යතුරු අගය යුගල ලබා ගැනීමට, අපට එය භාවිතා කළ හැකිය entrySet හැෂ්මැප් ක්‍රමය සමඟ පිවිසුම් සිතියම් අතුරුමුහුණතේ ක්‍රමය a එක් එක් ලූප සඳහා. සිතියම් අතුරුමුහුණතේ ඇතුළත් කිරීමේ ක්‍රමයට බිල්ට් ක්‍රම තිබේ 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 () සහ අගයන් () භාවිතා කරමින් මූලද්‍රව්‍ය හරහා ලූප කරන්න

හැෂ්මැප් මූලද්‍රව්‍ය හරහා ලූප් කිරීමට තවත් ක්‍රමයක් වන්නේ keySet () ක්‍රමය. මෙය භාවිතා කරමින්, පහත උදාහරණයේ දැක්වෙන පරිදි අපට සියලු යතුරු කට්ටලයක් වෙන වෙනම ලබා ගත හැකිය. සියලුම අගයන් වෙන වෙනම ලබා ගැනීම සඳහා, අපට එය භාවිතා කළ හැකිය අගයන් () ක්‍රමය සහ ඒවා ලූප සඳහා මුද්‍රණය කරන්න.

KeySet භාවිතා කරමින්, අපට යතුරු-අගය යුගල මුද්‍රණය කර ලූප සඳහා නැවත යෙදීමෙන් භාවිතා කළ හැකිය ලබා ගන්න () අනුරූප අගයන් ලබා ගැනීමේ ක්‍රමය.

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

නිගමනය

මෙම නිබන්ධනයේ දී, ඔබ විවිධ උදාහරණ සමඟ හැෂ්මැප් සහ එහි විවිධ ක්‍රම ගැන ඉගෙන ගෙන ඇත.

විමර්ශන