java 集合基础问题,,进来帮忙看下问题出在哪了,,?
HashMap的集合不允许有相同key,也就是后添加key,如果集合里已经存在将无法添加,,
而且,自定义类对象需要实现equals hashCode 两个方法,以供HashMap判断自定义类对象是否相等,
而如果自定义类equals 总是返回true,hashCode总是返回1,那自定义类对象不管如何都会被判断相等,
如下代码,为什么结果是false?难道不应该是true,因为B类对象和任何对象比较都会返回true。。
import java.util.HashMap;
class B
{
public boolean equals(Object obj)
{
return true;
}
public int hashCode()
{
return 1;
}
}
public class A
{
public static void main(String stg[])
{
HashMap hm=new HashMap();
hm.put(new B(),4);
hm.put(3,new B());
System.out.print(hm.containsValue("你好"));
System.exit(0);
}
}
[解决办法]
纠结啊
为什么一定要按照反的弄啊
[解决办法]
对象a和b,如果a.equals(b)==true,那么要求b.equals(a)也为true. 所以,你的equals方法砸实际使用的时候,会有意向不到的效果.
这个程序运行的结果为这样,是因为
new B().equals("")==true
"你好".equals(new B())==false