HashMap аргууд Java



HashMap Java Java газрын зураг

Java дахь HashMap Class нь өгөгдлийг дараах хэлбэрээр хадгалдаг түлхүүр утга түлхүүр өгөгдөл өвөрмөц байх ёстой хосууд. Бид харгалзах гол өгөгдөл дээр үндэслэн утгыг олж авах боломжтой. HashMap нь Java-ийн цуглуулгад байдаг бөгөөд java.util багцын нэг хэсэг юм. Энэ нь Hashing аргын зарчмаар ажилладаг.

Java HashMap шатлал

Java дахь HashMap анги нь Товч анги Хураангуй газрын зураг хэрэгжүүлдэг газрын зураг доор үзүүлсэн шиг интерфэйс.

Java дахь HashMap

HashMap бүтэц, ажиллах зарчим

Java дахь HashMap нь зарчмаар ажилладаг хэшээл техник. Хэш хийхдээ бид HashMap дээрх түлхүүр ба утгыг хооронд нь холбохын тулд хэш функцуудыг ашигладаг. HashMap нь түлхүүр утгын хосыг an хэлбэрээр хадгалдаг массив оролт бүрийг хувин гэж тооцдог зангилааны. Шанага нь массивын элементээс өөр зүйл биш юм. Зангилаа бүр 3 утгатай: түлхүүр, үнэ цэнэ, холбоос ирэх зангилаа. 1-ээс олон зангилаа ижил индексийг хуваалцах үед энэ нь холбоотой жагсаалтыг илэрхийлнэ. Зангилаа бүрийг хувин дахь индекс дээр буулгаж, үүнийг hashcode () ашиглан тооцоолно.

Java дахь HashMap

HashMap гүйцэтгэл

Java дахь HashMap-ийн гүйцэтгэл нь доорх параметрүүдээс хамаарна.

  • Эхний хүчин чадал - Энэ нь HashMap-ийг эхлүүлэхэд хэдэн хувин хадгалах боломжтойг илэрхийлнэ. Анхдагч байдлаар, энэ нь 16 түлхүүр утгын хосууд
  • Ачааллын хүчин зүйл - Энэ нь хүчин чадлыг нэмэгдүүлэх шаардлагатай хувь хэмжээ юм. Анхдагч байдлаар, энэ нь 0.75
  • Босго - Энэ бол анхдагч утга болох ачааллын хүчин зүйл ба хүчин чадлын бүтээгдэхүүн юм 12 (16 * 0.75)
  • Сэргээх - Энэ нь босго утгад хүрсний дараа хүчин чадлыг хоёр дахин нэмэгдүүлэх үйл явц юм.

Java HashMap мэдүүлэг

HashMap-ийг Java дээр ашиглахын тулд импортлох шаардлагатай java.util.HashMap багц. Синтакс нь доор өгөв.

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

Түлхүүр хэлбэр - Энэ бол гол өгөгдлийн төрөл юм.Eg: String эсвэл Integer

ValueType - Энэ бол утгын өгөгдлийн төрөл юм. Жнь: String эсвэл Integer

HashMap онцлог

Java дээрх HashMap-ийн онцлогуудыг доор харуулав.

  • Түлхүүр бүрт тохирох утгыг хадгална
  • Зөвхөн өвөрмөц түлхүүрүүдийг агуулдаг
  • Давхардсан түлхүүрүүдийг зөвшөөрдөггүй боловч давхардсан утгатай байж болно
  • Энэ нь өгөгдөл оруулах дараалал нь буцааж авах дараалалтай ижил биш гэсэн дарааллыг хадгалдаггүй.
  • Энэ нь синхрончлогдоогүй байна

Java HashMap Ангилал байгуулагчид

HashMap нь доорхи хүснэгтээс харахад 4 өөр байгуулагчийг дэмждэг.

байгуулагчТодорхойлолт
HashMap ()Анхдагч HashMap-ийг эхлүүлнэ
HashMap (Mapm)Map m-ийн элементүүдтэй Hashmap-ийг эхлүүлнэ
HashMap (int багтаамж)Заасан багтаамжийн бүхэл тоон утгатай hashmap-ийг эхлүүлнэ
HashMap (int багтаамж, float loadfactor)Заасан хүчин чадал, ачааллын хүчин зүйлээр hashmap-ийг эхлүүлнэ

HashMap аргууд

Java HashMap нь Map хүснэгтэд хамаарах бүх аргыг доорхи хүснэгтэд дурдсан аргуудын хамт дэмждэг

аргаТодорхойлолтҮзүүлэлт
хүчин төгөлдөр бус ()Энэ газрын зураг дээрх бүх зураглалыг устгадаг тул газрын зураг хоосон болно гэсэн үг юм
Объектын клон ()Энэ HashMap жишээний гүехэн хуулбарыг буцаана. Түлхүүр ба үнэт зүйлийг өөрсдөө хуулбарладаггүй
Boolean нь Key (Object key) агуулдагХэрэв заасан товчлуурын зураглалын утга байвал үнэнийг буцаанатүлхүүр - бид утгыг олж авах хэрэгтэй түлхүүр
Булын утга нь утга агуулдаг (объектын утга)Хэрэв заасан утгын түлхүүр зураглал байвал үнэнийг буцаанаутга - заасан түлхүүрийг буулгасан утга
Тохируулах entrySet ()Газрын зургийн зураглалын багцыг буцаана
Буль тэнцүү (Object o)Хэрэв объект нь газрын зургийн зураглалтай ижил байвал буцаанаo - харьцуулах объект
Integer get (объектын түлхүүр)Газрын зураг дээрх заасан түлхүүрийн утгыг буцаана. Хэрэв зураглал байхгүй бол буцаанатүлхүүр - утгын зураглалыг татаж авах түлхүүр
Integer getOrDefault (Object түлхүүр, Integer defaultvalue)Хэрэв зурагласан бол заасан түлхүүрийн утгыг буцаана, хэрэв зураглал байхгүй бол анхдагч утгыг буцаанатүлхүүр - бидний үнэлдэг түлхүүрийг буцааж өгөх ёстой
defaultvalue - зураглал байхгүй үед буцаах өгөгдмөл утга
int hashCode ()Газрын зургийн hashcode утгыг буцаана
Boolean isEmpty ()Буцаах үнэн бол hashmap-д ямар ч түлхүүр утгын хос байхгүй байна
KeySet () тохируулахГазрын зураг дээр байгаа товчлуурын багцыг буцаана
Бүхэл тоо (String түлхүүр, int утга)Түлхүүрийг үнэ цэнэтэй холбодог. Хэрэв түлхүүр аль хэдийн байгаа бол хуучин утгыг шинэ утгаар солинотүлхүүр - зураглал хийх түлхүүр
утга - заасан түлхүүрийн утга
хүчингүй putAll (Map m)M-ийн бүх гол утга бүхий зураглалыг одоогийн газрын зурагтай холбоноm - одоогийн газрын зураг дээр нэмж оруулах зураглалын хуулбар
Integer putIfAbsent (String түлхүүр, Integer утга)Хэрэв аль хэдийн тохируулагдаагүй бол утгыг өөр түлхүүртэй холбонотүлхүүр - зураглал хийх түлхүүр
утга - холбогдох утга
Бүхэл тоог хасах (объектын түлхүүр)Газрын зураг дээрх заасан түлхүүрийн зураглалыг устганатүлхүүр - зураглалыг устгах ёстой газрын зураг дээрх түлхүүр
Логийг арилгах (Object key, Object value)Тодорхойлогдсон утгын дагуу зурагдсан тохиолдолд л заасан түлхүүрийн оруулгыг арилганатүлхүүр - газрын зураг дээрх түлхүүр
утга - түлхүүр дээр буулгасан утга
Бүхэл тоогоор солих (мөрийн түлхүүр, бүхэл тоон утга)Тодорхойлогдсон түлхүүрийн утгыг тухайн утгын хамт яг одоо буулгаж авсан тохиолдолд л солинотүлхүүр - газрын зураг дээрх түлхүүр
утга - солих утга
Boolean солих (String түлхүүр, бүхэл тоо oldvalue, Integer newvalue)Тодорхойлсон хуучин утгыг аль хэдийн буулгасан тохиолдолд л заасан түлхүүрийн оролтыг шинэ утгатай орлуулнатүлхүүр - газрын зураг дээрх түлхүүр
oldvalue - хуучин утгыг товчлуур дээр буулгасан
newvalue - шинэ утгыг түлхүүр дээр буулгах
int хэмжээ ()Газрын зургийн хэмжээг буцаана
String toString ()Газрын зургийн мөрийн дүрсийг буцаана
Цуглуулгын утга ()Газрын зураг дээр байгаа утгуудын цуглуулгын харагдацыг буцаана

HashMap-ийн үл хамаарах зүйл

Энэ нь Java-д дараах үл хамаарах зүйлийг оруулав.

  • Зэрэгцээ өөрчлөлт, онцгой байдал
  • IllelgalMonitorStateException
  • NullPointerException
  • ТасалдсанException
  • Хууль бус Аргумент Үл хамаарах зүйл

HashMap дээр элемент нэмэх

Доорх жишээн дээрээс харахад бид эхлээд "оюутан" нэртэй HashMap-ийг String төрлийн түлхүүр, Integer төрлийн утга агуулгаар үүсгэнэ. Дараа нь бид түлхүүр утгын хосыг нэмнэ тавих арга. Гаралтын явцад элементүүдийг авах дараалал нь оруулсан дараалалтай ижил биш болохыг та анзаарч болно.

Дараа нь бид 'stu' нэртэй хоёр дахь HashMap-ийг үүсгээд дараа нь түлхүүр утгын 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}

Газрын зураг нь тодорхой түлхүүр эсвэл утга агуулсан эсэхийг шалгана уу

Бидний хэрэглэдэг агуулсанТүлхүүр газрын зураг дээр тодорхой түлхүүр байгаа эсэхийг шалгах арга. Энэ тохиолдолд Дев байгаа тул үнэн болж, Рави байхгүй тул худлаа буцаана.

Үүнтэй адил, агуулсанValue арга нь тодорхой утга байгаа эсэхийг шалгадаг. Энд 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

Түлхүүр утгын хослолыг арилгаж солих

Энд бид Java-ийн Integer ба. Hashmap үүсгэх болно String хэлийг хадгалахын тулд бичнэ үү. 2-р утгыг шинэ өгөгдлөөр сольж, тодорхой түлхүүр утгын хосыг ашиглан газрын зураг дээр байгаа бол 3-р утгыг орлуулна солих () арга.

Дараа нь бид 3-р элементийг түлхүүр ашиглан устгаж, 1-р элементийг key-value ашиглан устгана арилгах () арга.

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 нь тодорхой () газрын зураг дээрх гол утгын хосуудын зураглалыг цэвэрлэх арга ба хоосон газрын зураг хоосон эсэхийг шалгах арга. Зураглал байгаа тул 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 ашиглан HashMap элементүүдийг давтах

ХэшМапын түлхүүр утгын хос хослолыг Java дээр татаж авахын тулд бид entrySet HashMap арга Нэвтрэх a ашиглан Map интерфэйсийн арга давталт бүрийн хувьд. Map интерфэйсийн 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 ​​() ашиглан элементүүдийг тойрон эргэх.

Hashmap элементүүдээр дамжин өнгөрөх өөр нэг арга бол keySet () арга. Үүнийг ашиглан бид доорх жишээнээс харахад бүх түлхүүрүүдийн багцыг тусад нь авах боломжтой. Бүх утгыг тусад нь авахын тулд бид-г ашиглаж болно утга () аргыг ашиглаж хэвлэ.

KeySet-ийг ашигласнаар бид for-loop давталтаар key-value хосыг хэвлэж болно авах () харгалзах утгыг авах арга.

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 болон түүний өөр аргуудын талаар янз бүрийн жишээнүүдийн хамт сурч мэдсэн болно.

лавлагаа