JavaRush /Java блог /Random UA /Кава-брейк #173. У чому різниця між HashMap та Hashtable....

Кава-брейк #173. У чому різниця між HashMap та Hashtable. Як знайти і виправити виняток NullPointerException в Java

Стаття з групи Random UA

У чому різниця між HashMap та Hashtable

Джерело: Medium Сьогодні ви дізнаєтеся відповідь на одне з найпопулярніших питань на співбесідах з Java: яка різниця між HashMap і Hashtable. Кава-брейк #173.  У чому різниця між HashMap та Hashtable.  Як знайти і виправити виняток NullPointerException в Java - 1Hashtable - це структура даних для зберігання пар ключів та їх значень, заснована на хешуванні та реалізації інтерфейсу Map. HashMap також є структурою даних для зберігання ключів та значень, заснованої на хешуванні та реалізації інтерфейсу Map. HashMap дозволяє швидко отримати значення за ключем. Наприклад, ім'я користувача та номер його телефону. Між HashMap і Hashtable у Java є суттєві відмінності . До них відносяться безпека потоків, синхронізація та узгодженість реалізації Map. Важливо враховувати ці аспекти при виборі типу структури даних для використання у вашій програмі Java: HashMap — це несинхронізована невпорядкована карта пар ключ-значення (key-value). Вона допускає порожні значення і використовує хеш-код як перевірку на рівність, в той час як Hashtable є синхронізованою впорядкованою картою пар ключ-значення. Вона не допускає порожніх значень і використовує метод equals() для перевірки рівності. HashMap за замовчуванням має ємність 16, а початкова ємність Hashtable за замовчуванням - 11. Значення об'єкта HashMap перебираються за допомогою ітератора, а Hashtable - це єдиний клас, крім вектора, який використовує перечислювач (enumerator) для перебору значень об'єкта Hashtable. Пам'ятайте, що відмінності між HashMap і Hashtable є одним з найпопулярніших питань на співбесідах з Java.

Як знайти і виправити виняток NullPointerException в Java

Джерело: Theflashreads Прочитавши цю статтю, ви зможете краще розбиратися в пошуку та виправленні поширеної помилки в Java-коді - виключення NullPointerException. Кава-брейк #173.  У чому різниця між HashMap та Hashtable.  Як знайти і виправити виняток NullPointerException в Java - 2

Що таке виняток NullPointerException?

java.lang.NullPointerException є винятком часу виконання Java. Воно виникає, коли відбувається спроба доступу до змінної, яка не вказує на жодний об'єкт і ні на що не посилається, тобто вона дорівнює нулю. Оскільки NullPointerException це виняток часу виконання, його не потрібно перехоплювати та обробляти явно у коді програми.

За яких обставин виникає NullPointerException?

NullPointerException виникає у ситуації, коли робиться спроба доступу до неініціалізованому об'єкту. Як мовилося раніше, це відбувається, коли посилання об'єкт нікуди веде і має нульове значення. Ось деякі з найбільш поширених сценаріїв виключення NullPointerException :
  • Доступ до властивостей нульового об'єкта.
  • Викидання null з методу, що видає виняток.
  • Неправильна конфігурація для інфраструктур застосування залежностей, наприклад: (Spring).
  • Передача нульових параметрів метод.
  • Викликає методи для нульового об'єкта.
  • Використання synchronized для нульового об'єкта.
  • Доступ до елемента index (наприклад, масив) нульового об'єкта.

Приклад виключення NullPointerException

У цьому прикладі ми намагаємося викликати метод printLength , який приймає рядок як параметр і друкує його довжину. Якщо значення рядка, яке передається як параметр, дорівнює нулю, з'явиться виняток java.lang.NullPointerException .
public class NullPointerExceptionExample {

    private static void printLength(String str) {

        System.out.println(str.length());

    }



    public static void main(String args[]) {

        String nullString = null;

        printLength(nullString);

    }

}





Exception in thread "main" java.lang.NullPointerException

    at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)

    at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)

Як уникнути виникнення NullPointerException

Появи NullPointerException можна уникнути, використовуючи такі перевірки та превентивні методи:
  • Переконайтеся, що об'єкт правильно ініціалізований, додавши null перевірку перед зверненням до його методів або властивостей.

  • Використовуйте Apache Commons StringUtils для операцій з рядками: наприклад, StringUtils.isNotEmpty() для перевірки того, чи порожній рядок перед його подальшим використанням.

    import org.apache.commons.lang3.StringUtils;
    
    
    
    public class NullPointerExceptionExample {
    
        private static void printLength(String str) {
    
            if (StringUtils.isNotEmpty(str)) {
    
                System.out.println(str.length());
    
            } else {
    
                System.out.println("This time there is no NullPointerException");
    
            }
    
        }
    
    
    
        public static void main(String args[]) {
    
            String nullString = null;
    
            printLength(nullString);
    
        }
    
    }
  • По можливості використовуйте примітиви, а не об'єкти, оскільки вони не можуть мати порожніх посилань. Наприклад, використовуйте int замість Integer та boolean замість Boolean .

  • Переконайтеся, що ви двічі перевірабо код. Так ви знизите ймовірність появи NullPointerException .

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ