Sobes.tech
Junior

Ինչքան անվտանգ է դիմել HashMap-ի տարրին՝ օգտագործելով այն բանալի, որը գոյություն չունի?

sobes.tech AI

Պատասխան AI-ից

Երբ մուտք եք գործում HashMap-ի տարր, օգտագործելով չհայտնաբերված բանալի, get() մեթոդը վերադարձնում է null: Սա անվտանգ է այն իմաստով, որ չի առաջանա IndexOutOfBoundsException տեսակի արտակարգ իրավիճակ, ինչպես դա կլինի, օրինակ, զանգվածի կամ ցանկի դեպքում սխալ ինդեքսով մուտք գործելիս:

Այնուամենայնիվ, եթե հետագա կոդը ենթադրում է, որ ստացված արդյունքը չի լինի null (օրինակ, երբ կանչում եք մեթոդներ այդ օբյեկտի վրա), դա կարող է հանգեցնել NullPointerException-ի:

Անվտանգ աշխատանքի համար խորհուրդ է տրվում՝

  • Ստուգել արդյունքը null-ի համար նախքան օգտագործելը:

    // null ստուգման օրինակ
    Object value = hashMap.get(nonExistentKey);
    if (value != null) {
        // Օգտագործել value
    } else {
        // Հաշվարկել բացակա բանալիի դեպքը
    }
    
  • Օգտագործել մեթոդներ, որոնք տրամադրում են ըստ նախնական արժեք կամ ավելի անվտանգ վարքագիծ, օրինակ getOrDefault() (առկա Java 8-ից սկսած):

    // Օգտագործման օրինակ getOrDefault
    Object value = hashMap.getOrDefault(nonExistentKey, defaultValue);
    
  • Օգտագործել Optional կառուցվածքը (Java 8-ից), եթե դա տեղին է, որպեսզի ավելի հստակ նշեք հնարավոր բացակայությունը արժեքի:

    // Օգտագործման օրինակ Optional
    Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey));
    if (optionalValue.isPresent()) {
        // Օգտագործել արժեքը՝ optionalValue.get()
    }
    

Այսպիսով, ուղղակի մուտք գործելը get()-ով անվտանգ է, բայց null արժեքով աշխատելը առանց համապատասխան ստուգման կարող է հանգեցնել NullPointerException-ի։