Redian新闻
>
JAVA equals()和hashCode()请教。
avatar
JAVA equals()和hashCode()请教。# Programming - 葵花宝典
f*c
1
家里的锅太浅,经常油溅出来了。
谢了!
avatar
r*y
2
doug在rekall里干掉不少来抓他的警察,逃回家。老婆又要杀他,
接着逃,老婆指挥警察接着抓。整个过程感觉Lori和她老板完全掌握
colony, 警察什么都是他们手下,为啥后来还要入侵?
avatar
w*n
3
根据JAVA的规定,Set中的元素是不可重复的。是否重复是由Set中元素equals()方法决
定。
我现在有一个Turtle类:重写了equals方法:
class Turtle{
int size;
public Turtle(int s){
size = s;
}
@Override
public boolean equals(Object o) {
return size== ((Turtle)o).size;
}
}
如果我写了向Set里面加入Turtle对象的话。应该有几个元素?
HashSet t = new HashSet();
t.add(new Turtle(1));
t.add(new Turtle(2));
t.add(new Turtle(1));
答案是3个,我的问题是第一个Turtle对象(new Turtle(1)) 和第3个Tut
le对象重复了t.add(new Turtle(1))?怎么还能加进去?
avatar
l*3
4
就大炒锅就行了,我就不推荐了,我的是别人给的,特沉,每次炒菜和刷锅都累死。。
。。
锅底越厚越大厨。。。
PS,我的TIP是正崩油的那几秒,用个锅盖盖一下,不崩了就可以拿开。

【在 f***c 的大作中提到】
: 家里的锅太浅,经常油溅出来了。
: 谢了!

avatar
S*A
5
建议看看原来的 TR. 新的是交代不是很清楚。
为了彻底消灭地下游击队。
avatar
c*w
6
得把hashcode也写了
avatar
F*t
7
要油不溅出来一定要买高一点的锅子,炒锅一般都很浅
要不就等油还没有热就放菜进去
avatar
C*r
8
就比如现在米军在阿富汗,伊拉克,当年日军在华北。地下实力一大堆,所以找借口搞
大扫荡而已。
avatar
w*n
9
问题是我如果不重写hashCode()为什么是3个不同对象?
avatar
m*t
10
城管再牛,最后也只能上军队

【在 r**y 的大作中提到】
: doug在rekall里干掉不少来抓他的警察,逃回家。老婆又要杀他,
: 接着逃,老婆指挥警察接着抓。整个过程感觉Lori和她老板完全掌握
: colony, 警察什么都是他们手下,为啥后来还要入侵?

avatar
c*w
11
应为放进去时候看hashcode. 默认的实现是
对象内存地址,显然不一样,所以都放进去了。

【在 w*********n 的大作中提到】
: 问题是我如果不重写hashCode()为什么是3个不同对象?
avatar
H*S
12
取决于你是放的hashset还是treeset,前者需要override hashCode,后者需要
implement Comparable interface

【在 w*********n 的大作中提到】
: 根据JAVA的规定,Set中的元素是不可重复的。是否重复是由Set中元素equals()方法决
: 定。
: 我现在有一个Turtle类:重写了equals方法:
: class Turtle{
: int size;
: public Turtle(int s){
: size = s;
: }
: @Override
: public boolean equals(Object o) {

avatar
w*6
13
if hashset:
两步:
1)hashCode(), then
2)equals()
建议都一下<>:
hashCode() and equals() 必须同时 override and in sync
if treeset:
参见 HoboCS (Kane)
avatar
f*n
14
只要两个东西是equals的,就必须有一样的hashCode。你违反了这个规矩。
avatar
l*u
15
没有重载hashCode()的话就默认用Object的hashCode(),这个函数每个对象返回一个不
同的code。你的两个new Turtle(1)的hashCode也是不同的,所以被当做不同的对象可
以共存于一个Set里面了
HashSet判断是否重复的依据是:如果hashCode相同,继续判断equals()是否为true,
true则两个object相同,false则不同;如果hashCode不同,直接跳过equals()函数,
这俩obj不同
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。