【发布时间】:2014-09-15 19:30:35
【问题描述】:
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");
}
}
第一个 println 得到我{1=[]}
第二个让我[]
我正在尝试打印出“Hello world”,但 if 语句没有通过。
空HashSet,[]不等于null吗?
如何在这个 if 语句中使用空的 HashSet?
【问题讨论】:
-
没有包(
null)和有空包(空HashSet)一样吗? (注意:我在这里使用“包”的真实含义,而不是数据结构。) -
在 Java 中,
==对两个对象(即不是原语)总是进行比较以查看它们是否是对同一对象的引用(或都为空)。在某些情况下,某些语言能够重新定义==,以便比较内容。 Java 没有。 (Java 通常使用equals()来比较内容,但这对您没有帮助,因为HashSet上的equals()不认为空集等于空引用。他们可以这样定义,但他们没有。)
标签: java if-statement data-structures set hashset