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. Una 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.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 .
GO TO FULL VERSION