hashcode相同equals
答:如果相同添加失败,如果不同添加成功。为什么不直接用equals比较是否相同?因为不知道该跟哪个元素比较啊,难不成遍历整个Set来比较?如果有一万个元素呢,那么将会很费时间。而先算出hashcode在比较有个好处。只要hashcode不同,则可以确定元素不同。只有hashcode相同的情况下,元素才有可能相同。hashcode的...
答:不需要 不过set里面的对象时不能重复的嘛,所以每加入一个对象都会与以存在的对象比较,若已经存在,则后来的就会被丢弃 如果你要自己定义怎么样才算相同对象就重写hashCode()和equals();要不然不需要重写
答:这是Object类的boolean的equals()方法源代码:public boolean equals(Object obj) { return (this == obj);} 也就是说你的Test类没有覆盖equals()方法,也就是说 t1 == t2 与 t1.equals(t2) 实际上是一样的。确实Object类的hashCode()方法实现确实“借助”了对象的内存地址。但是hashCode的中文...
答:)和gethashcode()重写有很多情况,具体问题具体分析,现提供一种场景供参考。某应用要比较学生A(假设其数据库Id=200),该对象进行过两次实例化,这时使用equal()时,两次实例化的对象比较结果肯定是false,但实际都是A,这样我们就需要重写equal(),在其内部,如果ID>0,则返回ID,否则返回base值。
答:1、如果两个对象相同,那么它们的hashCode值一定要相同;2、如果两个对象的hashCode相同,它们并不一定相同 上面说的对象相同指的是用eqauls方法比较。 你当然可以不按要求去做了,但你会发现,相同的对象可以出现在Set集合中。同时,增加新元素的效率会大大下降。如果你改写了equal()方法,令两个...
答:比如你有两个User,现在某个软件的要求是只要它们id属性相同就是相等的,那就可以重写eqauls,只对id进行对比。toString是为了让你更容易看懂一个对象,当对象在控制台打印出来时你想看到一堆无意义的代码吗?那就是调用默认的toString的结果。你可以重写自己想要的输出,看到对象的每个属性。hashCode是...
答:此外,需要注意的是,当我们重写equals方法时,通常也需要重写hashCode方法,以维护equals方法和hashCode方法之间的契约:如果两个对象根据equals(Object)方法是相等的,那么调用这两个对象的hashCode方法必须产生相同的整数结果。这也是Java的约定,否则,例如在使用HashMap等数据结构时,可能会产生意外的结果。St...
答:还需要进一步判断equal来决定,以便add即使hashcode相同,但是equal不同的元素到hashset里).6.2 HashMap 具体可以参考effective java 39~40 hashmap的contains方法与get类似,在使用contains之前,先检查元素的类里面是否实现了hashcode,equal方法。下面的示例中equal中使用id去判断是否相等,hashcode里面一样...
答:第一,输出的是:getClass().getName() + "@" + Integer.toHexString(hashCode()),这是jdk对toString方法的实现。第二,“==”比较的就是一个对象的引用地址是否相同,即是不是一个对象。即不是左右两边非一个对象的话,该运算就返回false。hashcode和物理地址没关系,只是一种约定,并非强制性的...
答:java中的是equals,没有equal,equals比较的是内容,只要值相同就是true。如:String str = new String("aaa");String str1 = new String("aaa");boolean bl = str.equals(str1);结果就是:true。备注:但是如果比较的是str==str1,这个结果就是false(地址引用不同)。
网友评论:
狐杰19239167318:
JAVA中为什么两个不同的对象hashCode有可能会相同? -
27111吉彭
: 你说的那两种 都有可能相同 所以hashCode()是不可靠的! 那它不可靠为什么还要用它?因为它计算起来快啊! 这涉及到两个对象之间的比较 1.equals()相等的两个对象他们的hashCode()肯定相等,也就是用equals()对比是绝对可靠...
狐杰19239167318:
java 中 equals() 相等的两个对象,hashcode() 一定相等这句该怎么样理解,equals()相等指的是Object.equals()的对象地址相等吗?然后 hashcode... -
27111吉彭
:[答案] 在java中,equals和hashcode是有设计要求的,equals相等,则hashcode一定相等,反之则不然.为何会有这样的要求?在集合中,比如HashSet中,要求放入的对象不能重复,怎么判定呢?首先会调用hashcode,如果hashcode相等,则继续...
狐杰19239167318:
两个对象用equals方法比较为true,它们的Hashcode值相同吗 -
27111吉彭
: java中, (1)对于字符串变量来说,equal比较的两边对象的内容,所以内容相同返回的是true. 至于你没问到的“==”,比较的是内存中的首地址,所以如果不是同一个对象,“==”不会返回true 而是false. 举个简单的例子, ...
狐杰19239167318:
java se 问题:两个对象相等equals和==的区别 -
27111吉彭
: 所有对象的变量保存的都是对象的引用,也就是对象的所在地址的值,而不是对象本身的值.==比较的是两个变量本身的值,而不关心这个变量所指向的对象.在你的例子中,s1是第一个字符串abc的地址值,而s2则是第二个字符串的地址值.用==的时候它们是不相等的,因为这两个字符串被保存在两个不同的地址中;而用equals的时候,这个方法会将两个变量所指向的字符串进行比较,因此如果字符串相同,它就一定相等(如果地址相同,两个字符串当然肯定也相同).
狐杰19239167318:
求java equal 和 hashcode的区别,请简要概述,不要长篇大论,为什么有了equal还要有hashcode,谢谢哈! -
27111吉彭
: hashcode是根据对象的内存地址生成的,内存地址一样则hashcode就一样.然后equal结果也就是根据hashcode判断.一般判断对象是否一样,就直接调用对象的equal方法来判断即可.希望对你有所帮助!
狐杰19239167318:
java中的hashcode()方法,作用? -
27111吉彭
: hashcode这个方法是用来鉴定2个对象是否相等的.那你会说,不是还有equals这个方法吗?不错,这2个方法都是用来判断2个对象是否相等的.但是他们是有区别的.一般来讲,equals这个方...
狐杰19239167318:
重写equal 的同时为什么必须重写hashcode -
27111吉彭
: 如果你重载了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样.这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的...
狐杰19239167318:
java中怎么理解equals不相等,hashcode可能相等 -
27111吉彭
: 很好理解,你和另一个人的体重(HASH CODE)可能一样,但是你们不是同一个人(EQUAL)
狐杰19239167318:
重写equals一定重写hashcode吗 -
27111吉彭
: 我们都知道Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类.Ojbect类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的.在未重写equals方法我们是继承了object的equals方法,那里的 ...
狐杰19239167318:
在JAVA中怎么比较两个字符相等??
27111吉彭
: 我同意4楼的观点 讲解的比较透彻!!! 讲解就得这样有条理: 比较数字类型直接用 == 就可以 比较STRING类型的用 s.equal("abc") 比较对象是否一样用 HASHCODE(); 比较2个char 类型的东西 直接用 == 就可以 直接比的是值 不是哈西码 他是我们的学习榜样..