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);
    
  • Java 8 менен келген Optional структурасын колдонуу, эгер ылайыктуу болсо, мүмкүн болгон маанинин жоктугун так көрсөтүү үчүн:

    // Optional колдонуу мисалы
    Optional<Object> optionalValue = Optional.ofNullable(hashMap.get(nonExistentKey));
    if (optionalValue.isPresent()) {
        // маанини колдонуу: optionalValue.get()
    }
    

Ушул жол менен, түздөн-түз get() аркылуу кирүү коопсуз, бирок null мааниси менен иштөө туура текшерүү жок болсо, NullPointerException пайда кылышы мүмкүн.