JavaRush /Blog Java /Random-PL /Przerwa kawowa #173. Jaka jest różnica między HashMap a H...

Przerwa kawowa #173. Jaka jest różnica między HashMap a Hashtable. Jak znaleźć i naprawić wyjątek NullPointerException w Javie

Opublikowano w grupie Random-PL

Jaka jest różnica między HashMap a Hashtable

Źródło: Medium Dziś poznasz odpowiedź na jedno z najpopularniejszych pytań na rozmowach kwalifikacyjnych w języku Java: jaka jest różnica między HashMap a Hashtable. Przerwa kawowa #173.  Jaka jest różnica między HashMap a Hashtable.  Jak znaleźć i naprawić wyjątek NullPointerException w Javie — 1Hashtable to struktura danych do przechowywania par kluczy i ich wartości, oparta na haszowaniu i implementacji interfejsu Map. HashMap to także struktura danych do przechowywania kluczy i wartości, oparta na haszowaniu i implementacji interfejsu Map. HashMap pozwala szybko uzyskać wartość według klucza. Na przykład imię i nazwisko użytkownika oraz numer telefonu. Istnieją znaczne różnice między HashMap i Hashtable w Javie . Należą do nich bezpieczeństwo wątków, synchronizacja i spójność implementacji mapy. Wybierając typ struktury danych do użycia w programie Java, należy wziąć pod uwagę następujące aspekty: HashMap to niezsynchronizowana , nieuporządkowana mapa par klucz-wartość. Dopuszcza wartości null i używa kodu skrótu jako kontroli równości, podczas gdy Hashtable to zsynchronizowana uporządkowana mapa par klucz-wartość. Nie dopuszcza wartości null i wykorzystuje metodę równości() do sprawdzania równości. HashMap ma domyślną pojemność 16, a Hashtable ma domyślną początkową pojemność 11. Wartości obiektu HashMap są iterowane przy użyciu iteratora, a Hashtable jest jedyną klasą inną niż wektor, która używa modułu wyliczającego do iterować po wartościach obiektu Hashtable. Pamiętaj, że różnice między HashMap i Hashtable to jedno z najpopularniejszych pytań w rozmowach kwalifikacyjnych w języku Java.

Jak znaleźć i naprawić wyjątek NullPointerException w Javie

Źródło: Theflashreads Po przeczytaniu tego artykułu będziesz w stanie łatwiej znaleźć i naprawić typowy błąd w kodzie Java - NullPointerException. Przerwa kawowa #173.  Jaka jest różnica między HashMap a Hashtable.  Jak znaleźć i naprawić wyjątek NullPointerException w Javie — 2

Co to jest wyjątek NullPointerException?

java.lang.NullPointerException to wyjątek środowiska wykonawczego w Javie. Występuje, gdy podejmowana jest próba dostępu do zmiennej, która nie wskazuje ani nie odwołuje się do żadnego obiektu, czyli ma wartość null. Ponieważ NullPointerException jest wyjątkiem czasu wykonywania, nie trzeba go przechwytywać i obsługiwać jawnie w kodzie aplikacji.

W jakich okolicznościach występuje wyjątek NullPointerException?

Wyjątek NullPointerException występuje, gdy podejmowana jest próba dostępu do niezainicjowanego obiektu. Jak już wspomniano, dzieje się tak, gdy odwołanie do obiektu nie prowadzi donikąd i ma wartość null. Oto niektóre z najczęstszych scenariuszy wyjątków NullPointerException :
  • Uzyskaj dostęp do właściwości obiektu o wartości null.
  • Zgłaszanie wartości null z metody, która zgłasza wyjątek.
  • Niepoprawna konfiguracja frameworków wstrzykiwania zależności, na przykład: (Spring).
  • Przekazywanie parametrów null do metody.
  • Wywoływanie metod na obiekcie o wartości null.
  • Używanie synchronizacji na obiekcie zerowym.
  • Uzyskaj dostęp do elementu indeksu (na przykład w tablicy) obiektu o wartości null.

Przykładowy wyjątek NullPointerException

W tym przykładzie próbujemy wywołać metodę printLength , która przyjmuje jako parametr ciąg znaków i drukuje jego długość. Jeśli wartość ciągu przekazywanego jako parametr ma wartość null, zostanie zgłoszony wyjątek 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)

Jak uniknąć zgłaszania wyjątku NullPointerException

Można uniknąć wyjątku NullPointerException , stosując następujące kontrole i metody zapobiegawcze:
  • Upewnij się, że obiekt został poprawnie zainicjowany, dodając kontrolę zerową przed uzyskaniem dostępu do jego metod lub właściwości.

  • Do operacji na ciągach używaj Apache Commons StringUtils: na przykład StringUtils.isNotEmpty() w celu sprawdzenia, czy ciąg znaków jest pusty przed jego dalszym użyciem.

    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);
    
        }
    
    }
  • Jeśli to możliwe, używaj prymitywów zamiast obiektów, ponieważ nie mogą one mieć referencji zerowych. Na przykład użyj int zamiast Integer i boolean zamiast Boolean .

  • Upewnij się, że dokładnie sprawdziłeś swój kod. Zmniejszy to prawdopodobieństwo zgłoszenia wyjątku NullPointerException .

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION