JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 173. Was ist der Unterschied zwischen Has...

Kaffeepause Nr. 173. Was ist der Unterschied zwischen HashMap und Hashtable? So finden und beheben Sie NullPointerException in Java

Veröffentlicht in der Gruppe Random-DE

Was ist der Unterschied zwischen HashMap und Hashtable?

Quelle: Medium Heute erfahren Sie die Antwort auf eine der beliebtesten Java-Interviewfragen: Was ist der Unterschied zwischen HashMap und Hashtable? Kaffeepause Nr. 173.  Was ist der Unterschied zwischen HashMap und Hashtable?  So finden und beheben Sie NullPointerException in Java - 1Eine Hashtable ist eine Datenstruktur zum Speichern von Schlüsselpaaren und ihren Werten, basierend auf Hashing und einer Implementierung der Map-Schnittstelle. HashMap ist auch eine Datenstruktur zum Speichern von Schlüsseln und Werten, basierend auf Hashing und einer Implementierung der Map-Schnittstelle. Mit HashMap können Sie schnell einen Wert per Schlüssel abrufen. Zum Beispiel der Name und die Telefonnummer des Benutzers. Es gibt erhebliche Unterschiede zwischen HashMap und Hashtable in Java . Dazu gehören Thread-Sicherheit, Synchronisierung und Konsistenz der Map-Implementierung. Es ist wichtig, diese Aspekte zu berücksichtigen, wenn Sie die Art der Datenstruktur auswählen, die Sie in Ihrem Java-Programm verwenden möchten: Eine HashMap ist eine nicht synchronisierte , ungeordnete Karte von Schlüssel-Wert-Paaren. Es erlaubt Nullwerte und verwendet einen Hash-Code als Gleichheitsprüfung, während Hashtable eine synchronisierte geordnete Karte von Schlüssel-Wert-Paaren ist. Es erlaubt keine Nullwerte und verwendet die Methode equal() , um die Gleichheit zu prüfen. Eine HashMap hat eine Standardkapazität von 16 und eine Hashtable hat eine Standardanfangskapazität von 11. Die Werte eines HashMap-Objekts werden mithilfe eines Iterators iteriert, und Hashtable ist die einzige Klasse außer einem Vektor, die einen Enumerator verwendet Iterieren Sie über die Werte eines Hashtable-Objekts. Denken Sie daran, dass der Unterschied zwischen HashMap und Hashtable eine der beliebtesten Fragen in Java-Interviews ist.

So finden und beheben Sie NullPointerException in Java

Quelle: Theflashreads Nach dem Lesen dieses Artikels werden Sie einen häufigen Fehler im Java-Code besser finden und beheben können – NullPointerException. Kaffeepause Nr. 173.  Was ist der Unterschied zwischen HashMap und Hashtable?  So finden und beheben Sie NullPointerException in Java - 2

Was ist eine NullPointerException?

java.lang.NullPointerException ist eine Laufzeitausnahme in Java. Es tritt auf, wenn versucht wird, auf eine Variable zuzugreifen, die auf kein Objekt zeigt oder darauf verweist, d. h. sie ist null. Da es sich bei NullPointerException um eine Laufzeitausnahme handelt, muss sie nicht explizit im Anwendungscode abgefangen und behandelt werden.

Unter welchen Umständen tritt eine NullPointerException auf?

Eine NullPointerException tritt auf, wenn versucht wird, auf ein nicht initialisiertes Objekt zuzugreifen. Wie bereits erwähnt, passiert dies, wenn die Objektreferenz nirgendwo hingeht und einen Nullwert hat. Hier sind einige der häufigsten NullPointerException- Ausnahmeszenarien :
  • Greifen Sie auf Eigenschaften eines Nullobjekts zu.
  • Null aus einer Methode auslösen, die eine Ausnahme auslöst.
  • Falsche Konfiguration für Dependency-Injection-Frameworks, zum Beispiel: (Spring).
  • Übergabe von Nullparametern an eine Methode.
  • Aufrufen von Methoden für ein Nullobjekt.
  • Verwendung von synchronisiert für ein Nullobjekt.
  • Greifen Sie auf das Indexelement (z. B. in einem Array) eines Nullobjekts zu.

Beispiel NullPointerException

In diesem Beispiel versuchen wir, die printLength- Methode aufzurufen , die eine Zeichenfolge als Parameter akzeptiert und deren Länge ausgibt. Wenn der Wert der Zeichenfolge, die als Parameter übergeben wird, null ist, wird eine java.lang.NullPointerException ausgelöst .
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)

So vermeiden Sie das Auslösen einer NullPointerException

NullPointerException kann durch die Verwendung der folgenden Prüfungen und vorbeugenden Methoden vermieden werden:
  • Stellen Sie sicher, dass ein Objekt ordnungsgemäß initialisiert ist, indem Sie vor dem Zugriff auf seine Methoden oder Eigenschaften eine Nullprüfung hinzufügen .

  • Verwenden Sie Apache Commons StringUtils für String-Operationen: zum Beispiel StringUtils.isNotEmpty() , um zu prüfen, ob ein String leer ist, bevor Sie ihn weiter verwenden.

    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);
    
        }
    
    }
  • Verwenden Sie nach Möglichkeit Primitive anstelle von Objekten, da diese keine Nullreferenzen haben können. Verwenden Sie beispielsweise int anstelle von Integer und boolean anstelle von Boolean .

  • Stellen Sie sicher, dass Sie Ihren Code noch einmal überprüfen. Dadurch wird die Wahrscheinlichkeit verringert, dass eine NullPointerException ausgelöst wird .

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