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");
}
}
Pierwszy println dostaje mi {1=[]}
Drugi dostaje mi []
Próbuję wydrukować „Hello World”, ale jeśli oświadczenie nie przeżywa.
Czy pusty HashSet, []
nie jest równy null
?Jak używać pustego HashSet java w instrukcji if?
Jak używać pustego HashSet w tej instrukcji if?
Czy nie ma torby ("null") tak samo jak pustej torby (puste 'HashSet')? (Uwaga: Używam tutaj rzeczywistego znaczenia "torby", a nie struktury danych.) –
W Javie '== 'na dwóch obiektach (tj. Nie na elementach pierwotnych) ** zawsze ** porównuje, czy są są odniesieniami do tego samego obiektu (lub oba są zerowe). Niektóre języki mają możliwość przedefiniowania '==' w niektórych przypadkach, aby porównać zawartość. Java nie. (Java zwykle używa 'equals()' do porównywania zawartości, ale to ci nie pomoże, ponieważ 'equals()' na 'HashSet' nie uważa pustego zestawu za równy referencji zerowej. tak, ale tak się nie stało.) – ajb