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");
}
}
Die erste println wird mir {1=[]}
Der zweite bekommt mir []
Ich versuche, zu drucken „Hallo Welt“, aber die if-Anweisung nicht durchmachen.
Ist das leere HashSet []
ungleich null
?Wie benutze ich Java leeres HashSet in if-Anweisung?
Wie verwende ich die leere HashSet in dieser If-Anweisung?
Haben Sie keine Tasche ('null') die gleiche wie eine leere Tasche (leer' HashSet')? (Anmerkung: Ich verwende hier die reale Bedeutung von "Tasche", nicht die Datenstruktur.) –
In Java, '==' auf zwei Objekten (dh nicht Primitiven) ** immer ** vergleicht, um zu sehen, ob sie sind Referenzen auf das gleiche Objekt (oder beide sind null). Einige Sprachen haben die Fähigkeit, '== 'in einigen Fällen neu zu definieren, so dass sie den Inhalt vergleicht. Java nicht. (Java verwendet '' equals() 'normalerweise, um Inhalte zu vergleichen, aber das wird Ihnen hier nicht helfen, weil' equals() 'auf einem' HashSet' eine leere Menge nicht als NULL-Referenz betrachtet. Sie hätten definieren können es so, aber sie haben es nicht.) – ajb