JavaRush /Java Blog /Random-IT /Pausa caffè #173. Qual è la differenza tra HashMap e Hash...

Pausa caffè #173. Qual è la differenza tra HashMap e Hashtable. Come trovare e correggere NullPointerException in Java

Pubblicato nel gruppo Random-IT

Qual è la differenza tra HashMap e Hashtable

Fonte: Medium Oggi imparerai la risposta a una delle domande più popolari dell'intervista Java: qual è la differenza tra HashMap e Hashtable. Pausa caffè #173.  Qual è la differenza tra HashMap e Hashtable.  Come trovare e correggere NullPointerException in Java - 1Una Hashtable è una struttura dati per memorizzare coppie di chiavi e i loro valori, basata sull'hashing e su un'implementazione dell'interfaccia Map. HashMap è anche una struttura dati per la memorizzazione di chiavi e valori, basata sull'hashing e su un'implementazione dell'interfaccia Map. HashMap ti consente di ottenere rapidamente un valore per chiave. Ad esempio, il nome e il numero di telefono dell'utente. Esistono differenze significative tra HashMap e Hashtable in Java . Questi includono la sicurezza dei thread, la sincronizzazione e la coerenza dell'implementazione della mappa. È importante considerare questi aspetti quando si sceglie il tipo di struttura dati da utilizzare nel programma Java: Una HashMap è una mappa non sincronizzata e non ordinata di coppie chiave-valore. Consente valori nulli e utilizza un codice hash come controllo di uguaglianza, mentre Hashtable è una mappa ordinata sincronizzata di coppie chiave-valore. Non consente valori nulli e utilizza il metodo equals() per verificare l'uguaglianza. Una HashMap ha una capacità predefinita di 16 e una Hashtable ha una capacità iniziale predefinita di 11. I valori di un oggetto HashMap vengono ripetuti utilizzando un iteratore e Hashtable è l'unica classe diversa da un vettore che utilizza un enumeratore per scorrere i valori di un oggetto Hashtable. Ricorda che le differenze tra HashMap e Hashtable sono una delle domande più popolari nelle interviste Java.

Come trovare e correggere NullPointerException in Java

Fonte: Theflashreads Dopo aver letto questo articolo, sarai in grado di trovare e correggere meglio un errore comune nel codice Java: NullPointerException. Pausa caffè #173.  Qual è la differenza tra HashMap e Hashtable.  Come trovare e correggere NullPointerException in Java - 2

Cos'è una NullPointerException?

java.lang.NullPointerException è un'eccezione di runtime in Java. Si verifica quando si tenta di accedere a una variabile che non punta o non fa riferimento a nessun oggetto, ovvero è nulla. Poiché NullPointerException è un'eccezione in fase di esecuzione, non è necessario che venga intercettata e gestita in modo esplicito nel codice dell'applicazione.

In quali circostanze si verifica una NullPointerException?

NullPointerException si verifica quando viene effettuato un tentativo di accedere a un oggetto non inizializzato. Come già accennato, ciò accade quando il riferimento all'oggetto non va da nessuna parte e ha un valore nullo. Ecco alcuni degli scenari di eccezione NullPointerException più comuni :
  • Accedere alle proprietà di un oggetto null.
  • Generazione null da un metodo che genera un'eccezione.
  • Configurazione errata per i framework di inserimento delle dipendenze, ad esempio: (Spring).
  • Passaggio di parametri nulli a un metodo.
  • Chiamare metodi su un oggetto null.
  • Utilizzo sincronizzato su un oggetto nullo.
  • Accedi all'elemento indice (ad esempio, in un array) di un oggetto null.

Esempio NullPointerException

In questo esempio, stiamo provando a chiamare il metodo printLength , che accetta una stringa come parametro e ne stampa la lunghezza. Se il valore della stringa passata come parametro è null, verrà lanciata una 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)

Come evitare di lanciare NullPointerException

NullPointerException può essere evitato utilizzando i seguenti controlli e metodi preventivi:
  • Assicurarsi che un oggetto sia inizializzato correttamente aggiungendo un controllo null prima di accedere ai relativi metodi o proprietà.

  • Utilizza Apache Commons StringUtils per operazioni sulle stringhe: ad esempio, StringUtils.isNotEmpty() per verificare se una stringa è vuota prima di utilizzarla ulteriormente.

    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);
    
        }
    
    }
  • Utilizzare le primitive anziché gli oggetti quando possibile, poiché non possono avere riferimenti nulli. Ad esempio, usa int invece di Integer e boolean invece di Boolean .

  • Assicurati di ricontrollare il codice. Ciò ridurrà la probabilità che venga lanciata una NullPointerException .

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