Wie verwenden von java leeren HashSet in der if-Anweisung?

public static void main(String[] args) {
    Map<String, HashSet<String>> test = new HashMap<String, HashSet<String>>();

    test.put("1", new HashSet<String>());
    System.out.println(test);

    System.out.println(test.get("1"));

    if(test.get("1") == null){
        System.out.println("Hello world");
    }
}

Den ersten println ruft mich {1=[]}
Der zweite bekommt von mir []

Ich bin versucht zu print out "Hello world", aber die if-Anweisung nicht durch.

Die leeren HashSet, [] nicht gleich null?

Wie verwende ich die leeren HashSet in dieser if-Anweisung?

  • Nicht mit einer Tasche (null) das gleiche wie mit einer leeren Tasche (leer HashSet)? (Hinweis: ich bin mit der realen Bedeutung von "Tasche" hier, nicht die Datenstruktur.)
  • In Java == auf zwei Objekte (also keine primitiven) immer vergleicht, um zu sehen, wenn Sie Referenzen auf das gleiche Objekt (oder sind beide null). Einige Sprachen haben die Fähigkeit, neu zu definieren == in einigen Fällen so, dass es vergleicht die Inhalte. Java funktioniert nicht. (Java benötigt in der Regel equals() um Inhalte zu vergleichen, aber das wird nicht helfen Sie hier, weil equals() auf eine HashSet nicht als ein leerer Satz sein, der gleich einem null-Verweis. Hätten Sie definiert es so, aber Sie nicht.)
InformationsquelleAutor user2995344 | 2014-09-15
Schreibe einen Kommentar