当前位置:  开发笔记 > 编程语言 > 正文

为什么AbstractCollection没有实现equals()?

如何解决《为什么AbstractCollection没有实现equals()?》经验,为你挑选了1个好方法。

你知道吗 :

Map m1 = new HashMap();
Map m2 = new HashMap();
System.out.println("m1.equals(m2) = "+m1.equals(m2));
System.out.println("m1.keySet().equals(m2.keySet()) = "
            +m1.keySet().equals(m2.keySet()));
System.out.println("m1.entrySet().equals(m2.entrySet()) = "
            +m1.entrySet().equals(m2.entrySet()));
System.out.println("m1.values().equals(m2.values()) = "
            +m1.values().equals(m2.values()));

输出:

m1.equals(m2) = true
m1.keySet().equals(m2.keySet()) = true
m1.entrySet().equals(m2.entrySet()) = true
m1.values().equals(m2.values()) = false

这是因为AbstractCollection(HashMap$Values继承自)不会覆盖的事实#equals().

你知道为什么会这样吗?



1> Greg Case..:

根据合同Collection#equals(),Collections 没有通用的equals()方法,因此AbstractCollection不能提供一个.

请注意,HashMap$Values既不是Set也不是List,因此是窘境,从某种意义上说它是不支持的原因equals().

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有