首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

java 集合基础有关问题,进来帮忙看上有关问题出在哪了,

2012-08-19 
java 集合基础问题,,进来帮忙看下问题出在哪了,,?HashMap的集合不允许有相同key,也就是后添加key,如果集合

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

热点排行