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 (leerHashSet
)? (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 Regelequals()
um Inhalte zu vergleichen, aber das wird nicht helfen Sie hier, weilequals()
auf eineHashSet
nicht als ein leerer Satz sein, der gleich einem null-Verweis. Hätten Sie definiert es so, aber Sie nicht.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Unterschied zwischen
null
, was bedeutet, "nichts" und eine leereHashSet
. Eine leereHashSet
ist eine tatsächlicheHashSet
, aber eine, die nur zufällig passiert, nicht alle Elemente in es. Dies ist ähnlich wienull
ist nicht dasselbe wie der leere string""
, das ist ein string, der keine Zeichen.Um zu überprüfen, ob die
HashSet
leer ist, verwenden Sie dieisEmpty
Methode:Hoffe, das hilft!
Richtig, ist es nicht. Genau das ist der Grund, warum Ihr code sich so verhält, wie Sie es tut.
Prüfen für beide
null
und leeren Satz, verwenden Sie die folgenden Konstrukt:Den leeren
HashSet
ist nicht einnull
. Fügen Sie einen test mit dieHashSet.size()
oder verwenden Sie
HashSet.isEmpty()
,Alternativ können Sie kommentieren
Dann
test.get("1")
ist null.Sollten Sie die Set_Obj.isEmpty () - Methode. Diese gibt einen booleschen Wert zurück, die überprüfen, ob das set hat jedes element in der it (true).