HashMap մեթոդները Java



HashMap Java Java քարտեզ

HashMap դասը Java- ում պահպանում է տվյալները ՝ առանցքային արժեք զույգեր, որտեղ հիմնական տվյալները պետք է լինեն եզակի: Մենք կարող ենք մուտք գործել արժեքներ ՝ հիմնվելով համապատասխան հիմնական տվյալների վրա: HashMap- ը առկա է Java- ի հավաքածուի շրջանակներում և java.util փաթեթի մի մասն է: Այն աշխատում է Հաշինգ տեխնիկայի սկզբունքի վրա:

Java HashMap հիերարխիա

Java- ի HashMap դասը տարածում է Վերացական դաս Վերացական քարտեզ և իրականացնում է Քարտեզ ինտերֆեյսը, ինչպես ցույց է տրված ստորև:

HashMap- ը Java- ում

HashMap կառուցվածքը և աշխատանքային սկզբունքը

HashMap- ը Java- ում աշխատում է սկզբունքի հիման վրա ծիծաղել տեխնիկա Հեշինգում մենք օգտագործում ենք hash գործառույթներ ՝ HashMap- ում բանալին և արժեքը կապելու համար: HashMap- ը պահում է առանցքային արժեքի զույգերը `an- ի տեսքով դասավորություն այն հանգույցների, որտեղ յուրաքանչյուր մուտք համարվում է դույլ: Դույլը ոչ այլ ինչ է, քան զանգվածի տարր: Յուրաքանչյուր հանգույց ունի 3 արժեք. Բանալի, արժեք, և հղում դեպի հաջորդ հանգույց Երբ 1-ից ավելի հանգույց կիսում է նույն ցուցանիշը, դա ներկայացնում է կապված ցուցակ: Յուրաքանչյուր հանգույց արտապատկերվում է դույլի ինդեքսին, որը հաշվարկվում է hashcode () - ի միջոցով:

HashMap- ը Java- ում

HashMap կատարում

HashMap- ի կատարումը Java- ում կախված է ստորև նշված պարամետրերից.

  • Նախնական հզորություն. Այն նշանակում է, թե քանի դույլ կարող է պահեստավորել HashMap- ը, երբ նախնականացվում է: Լռելյայն, դա այդպես է 16 առանցքային արժեքի զույգեր
  • Բեռի գործոն. Դա հզորության տոկոսն է, որն անհրաժեշտ է ավելացնել: Լռելյայն, դա այդպես է 0.75
  • Շեմ - սա բեռի գործոնի և հզորության արդյունք է, որի կանխադրված արժեքը 12 (16 * 0.75)
  • Վերաթողարկում - Սա շեմային արժեքին հասնելուց հետո կարողությունը կրկնապատկելու գործընթաց է:

Java HashMap հայտարարություն

HashMap- ը Java- ում օգտագործելու համար անհրաժեշտ է ներմուծել java.util.HashMap փաթեթ Շարահյուսությունը տրված է ստորև.

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

KeyType - Դա հիմնական տվյալների տեսակն է.Eg: Լար կամ ամբողջ թիվ

ValueType - Դա արժեքի տվյալների տեսակ է: Օրինակ ՝ լար կամ ամբողջ թիվ

HashMap- ի առանձնահատկությունները

Ստորև բերված են Java- ում HashMap- ի առանձնահատկությունները.

  • Պահում է յուրաքանչյուր ստեղին համապատասխան արժեքներ
  • Պարունակում է միայն եզակի բանալիներ
  • Թույլ չի տալիս կրկնօրինակ ստեղներ, բայց կարող է ունենալ կրկնօրինակ արժեքներ
  • Այն չի պահպանում որևէ պատվեր, ինչը նշանակում է, որ տվյալների տեղադրման կարգը նույնը չէ, երբ դրանք ստացվում են:
  • Այն ոչ համաժամացված է

Java HashMap դասի կոնստրուկտորներ

HashMap- ն աջակցում է 4 տարբեր կոնստրուկտորների, ինչպես կարող եք տեսնել ստորև բերված աղյուսակում.

շինարարՆկարագրություն
HashMap ()Նախաձեռնում է կանխադրված HashMap- ը
HashMap (Mapm)Նախագծում է Hashmap քարտեզը m- ի տարրերով
HashMap (ներ թողունակություն)Նախագծում է hashmap- ը նշված հզորության ամբողջ արժեքի հետ
HashMap (ներ թողունակություն, բոց բեռի գործոն)Նախագծում է hashmap- ը նշված հզորությամբ և բեռի գործոնով

HashMap մեթոդներ

Java HashMap- ն աջակցում է բոլոր այն մեթոդներին, որոնք պատկանում են Քարտեզի ինտերֆեյսին, ներքևի աղյուսակում նշված մեթոդների հետ միասին

ՄեթոդՆկարագրությունParameter
անվավեր պարզ ()Հեռացնում է այս քարտեզի բոլոր գծապատկերները, ինչը նշանակում է, որ քարտեզը դատարկ կլինի
Օբյեկտի կլոն ()Վերադարձնում է HashMap- ի այս օրինակի մակերեսային օրինակը: Բանալին և արժեքներն իրենք չեն կլոնավորվում
Բուլյան պարունակություն Key (օբյեկտի բանալին)Վերադարձնում է true, եթե նշված բանալու համար կա քարտեզագրման արժեքստեղն - բանալին, որի համար մենք պետք է վերականգնենք արժեքը
Boolean περιέχει արժեք (օբյեկտի արժեք)Նշված արժեքի համար ստեղնի քարտեզագրում կա, եթե վերադառնում է trueարժեք - այն արժեքը, որի համար նշված է նշված բանալին
Սահմանել entrySet ()Վերադարձնում է քարտեզի քարտեզագրման մի շարք տեսք
Բուլյան հավասար է (օբյեկտ o)Վերադառնում է true, եթե օբյեկտը ունի նույն քարտեզի քարտեզագրումըo - համեմատելի օբյեկտ
Integer get (Օբյեկտի բանալին)Վերադարձնում է քարտեզում նշված բանալու արժեքը: Այն վերադառնում է զրոյի, եթե քարտեզագրում չկաստեղն - այն բանալին, որի համար պետք է որոնել արժեքի քարտեզագրումը
Integer getOrDefault (օբյեկտի բանալին, ամբողջ թիվի լռելյայն արժեքը)Վերադարձնում է նշված բանալու արժեքը, եթե քարտեզագրված է, հակառակ դեպքում վերադարձնում է լռելյայն արժեքը, եթե քարտեզագրում չկաստեղն - այն բանալին, որի համար մենք գնահատում ենք, պետք է վերադարձվի
defaultvalue - նախնական արժեքը, որը պետք է վերադարձվի, երբ քարտեզագրում չկա
int hashCode ()Վերադարձնում է քարտեզի հեշոդի արժեքը
Boolean- ը դատարկ է ()Վերադարձնում է իրականը. Hashmap- ը չունի բանալիների արժեքի զույգեր
Սահմանել keySet ()Վերադարձնում է քարտեզում առկա ստեղների սահմանված տեսքը
Integer put (Լարի ստեղն, int արժեք)Բանալին կապում է արժեքի հետ: Եթե ​​բանալին արդեն առկա է, այն հին արժեքը փոխարինում է նոր արժեքովբանալին - քարտեզագրման բանալին
value - նշված ստեղնի արժեքը
անվավեր դրված բոլորը (Քարտեզը մ)Ընկերակցում է ընթացիկ քարտեզի վրա m- ի առանցքային արժեքի բոլոր գծապատկերներըմ - ընթացիկ քարտեզին ավելացվող քարտեզագրության օրինակները
Integer putIfAbsent (Լարի ստեղն, ամբողջ արժեք)Ասոցիացված արժեքը, եթե արդեն ոչ թե նշված է բանալին, ուրիշը վերադարձնում է ընթացիկ արժեքըբանալին - քարտեզագրման բանալին
արժեք - արժեք, որը պետք է կապվի
Ամբողջ թվով հեռացում (օբյեկտի բանալին)Հեռացնում է քարտեզում նշված բանալու համար քարտեզագրումըստեղն - քարտեզի բանալին, որի համար քարտեզագրումը պետք է հեռացվի
Բուլյան հեռացում (օբյեկտի բանալին, օբյեկտի արժեքը)Հեռացնում է նշված բանալու մուտքը միայն այն դեպքում, եթե այն քարտեզագրված է նշված արժեքովստեղն - ստեղնը քարտեզում
արժեք - ստեղնին գծագրված արժեք
Ամբողջ թվով փոխարինում (լարի ստեղն, ամբողջ արժեք)Նշված բանալիի արժեքը փոխարինում է արժեքով միայն այն դեպքում, եթե այն ներկայումս քարտեզագրված է որոշ արժեքովստեղն - ստեղնը քարտեզում
արժեք - արժեք, որը պետք է փոխարինվի
Բուլյան փոխարինում (լարի ստեղն, ամբողջ հին արժեք, ամբողջ նոր արժեք)Նշված բանալու մուտքը փոխարինում է նոր արժեքով միայն այն դեպքում, եթե այն արդեն քարտեզագրված է նշված հին արժեքի հետստեղն - բանալին քարտեզում
oldvalue - ստեղնի վրա քարտեզագրված հին արժեք
newvalue - նոր արժեք, որը պետք է քարտեզագրվի բանալին
int չափը ()Վերադարձնում է քարտեզի չափը
String toString ()Վերադարձնում է քարտեզի լարային ներկայացումը
Հավաքածուի արժեքները ()Վերադարձնում է քարտեզում առկա արժեքների հավաքածուի տեսքը

HashMap Բացառություններ

Այն Java- ում է գցում հետևյալ բացառությունները.

  • Միաժամանակ փոփոխություն Բացառություն
  • IllelgalMonitorStateException
  • NullPointerException
  • Ընդհատված բացառություն
  • IllegalArgumentException

Էլեմենտներ ավելացնելով HashMap- ին

Ինչպես տեսնում եք ստորև բերված օրինակում, նախ մենք ստեղծում ենք «ուսանող» անունով HashMap ՝ String տեսակի և Integer տիպի արժեքի բանալիներով: Դրանից հետո մենք ավելացնում ենք առանցքային արժեքի անհատական ​​զույգեր ՝ օգտագործելով դնել մեթոդ Ելքի մեջ կարող եք նկատել, որ տարրերի որոնման կարգը նույնը չէ, ինչով այն տեղադրվել է:

Հաջորդը, մենք ստեղծում ենք երկրորդ HashMap անունով 'stu' և այնուհետև ավելացնում 2 ստեղնային արժեքի XNUMX զույգ: Այնուհետև այն ավելացնում ենք «ուսանողի» քարտեզին ՝ օգտագործելով դրեցԲոլորը մեթոդ է.

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- ը ներկա է, ուստի այն վերադառնում է ճշմարիտ, իսկ Ravi- ն ներկա չէ, ուստի վերադառնում է կեղծ:

Նմանապես, պարունակում է արժեք մեթոդը ստուգում է արդյոք առկա է որոշակի արժեք: Այստեղ 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

Հեռացնել և փոխարինել հիմնական արժեքի զույգը

Այստեղ մենք ստեղծում ենք hashmap Java- ի Integer- ի և 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}

Պարզ և դատարկ մեթոդների օրինակ

HashMap- ը Java- ում օգտագործում է պարզ () քարտեզի վրա առանցքային արժեքի զույգերի քարտեզագրումը մաքրելու մեթոդ և դատարկ է մեթոդը ստուգում է, արդյոք քարտեզը դատարկ է: 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

HashMap- ի տարրերի միջով ջնջում ՝ enterSet- ի միջոցով

HashMap- ի առանցքային արժեքի անհատական ​​զույգերը Java- ում հետ բերելու համար մենք կարող ենք օգտագործել այն մուտքի Սահմանել HashMap- ի մեթոդը `հետ միասին մուտք Քարտեզի միջերեսի մեթոդը ՝ օգտագործելով 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 () և արժեքներ ()

Hashmap տարրերի միջով անցնելու մեկ այլ տարբերակ `օգտագործելով 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

եզրափակում

Այս ձեռնարկում դուք սովորել եք HashMap- ի և դրա տարբեր մեթոդների մասին ՝ տարբեր օրինակների հետ միասին:

Մանրամասն