Ինչքան անվտանգ է դիմել 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-ի։