放入Set集合中的对象必须重写equals()方法。及重写hashCode()方法,会提高性能。这二点,能举一个例子吗,感谢 放入Set集合中的对象必须重写equals()方法。及重写hashCode()方法,会提高性能。这二点,能举一个例子吗,感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重写equals()方法,及重写hashCode()方法,不会提高性能。相反,重写hashCode()方法不得当会降低性能。容器的机制请您鉴赏:http://blog.csdn.net/I_Believe_/archive/2005/11/02/521262.aspx估计以后没时间写出这么细心的文章了。 因为Set是不重复的,所以equals是必须的,让容器知道什么是重复的hashCode是必须的,当用到HashSet的时候,因为HashSet就是根据hashCode来存放的,这种东西不用别人给你代码,你自己试试不就知道了,给你代码又能怎么样,一个有或没有equals的class的实例存入一个Set你能看到效果? hashCode根数据库索引的功能有些类似重写hashCode()的思想往往就是使hashCode得值离散分布打个比方 一个班的学生住在旅馆里 你的目的是找快速找到一个名字叫做A的学生 需要知道 学生的名字和他所住的房间的门牌号 这里学生是对象 门牌号是hashcode如果不重写hashCode()就好像你不知道门牌号 只能挨个房间找名字叫A的学生如果重写hashCode()但是对象的hashcode分布不是很离散 那么就好像 每房间里都住了好几个学生 你知道了门牌号也要挨个问这几个人 "你是不是叫做A?"才能找到如果重写hashCode()并且使用让hashcode离散分布的算法 那么就好像每个房间都只住了一个学生知道了学生名字和房间号 一下子就找到了程序性能就是如此提高滴 有一点说错了不重写hashCode()就是所有人都在一个房间里 ... Set和hashCode本身没有关系重写equals也不是为了提高性能hashCode只是和哈西表这种数据结构有关系 关于服务器上保存用户名和密码问题? org.w3c.dom.node 和org.htmlparser.Node的问题 高手进来 一个过滤HTML标签的问题,请高手帮下忙 JAVA中关于垃圾回收机制的问题 不知道这个程序哪错了. JThread和Thread的区别? 关于编译异常和运行异常的选取 问个问题:自己定义的鼠标指针图片大小时32×32的,怎么改变其大小 关于.NET和C#的优劣 谁能帮帮我啊!高分回报! 如何查看JVM上面所有进程和线程信息(急) 求一正则表达式的写法
hashCode是必须的,当用到HashSet的时候,因为HashSet就是根据hashCode来存放的,这种东西不用别人给你代码,你自己试试不就知道了,给你代码又能怎么样,一个有或没有equals的class的实例存入一个Set你能看到效果?
重写hashCode()的思想往往就是使hashCode得值离散分布
打个比方 一个班的学生住在旅馆里
你的目的是找快速找到一个名字叫做A的学生 需要知道 学生的名字和他所住的房间的门牌号
这里学生是对象 门牌号是hashcode
如果不重写hashCode()就好像你不知道门牌号 只能挨个房间找名字叫A的学生
如果重写hashCode()但是对象的hashcode分布不是很离散 那么就好像 每房间里都住了好几个学生 你知道了门牌号也要挨个问这几个人 "你是不是叫做A?"才能找到
如果重写hashCode()并且使用让hashcode离散分布的算法 那么就好像每个房间都只住了一个学生
知道了学生名字和房间号 一下子就找到了程序性能就是如此提高滴
不重写hashCode()就是所有人都在一个房间里 ...
重写equals也不是为了提高性能
hashCode只是和哈西表这种数据结构有关系