由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 问个hashtable实现问题
相关主题
请教一段代码,关于hashCode()也问个 HashMap问题
问个set和literal String的问题我这个简单例子,怎么在actionListener里面拿到contentPane的instance?
问个Object.hashCode()的问题请教一个简单的问题
Object比较问个autoboxing的问题
answer Re: how HashMap/Hashtable compare key?关于==和equals
Java的工作面试主要考什么?主要是算法吗?问个primitive type的问题
java这个是什么逻辑?出个简单题,看你Java APi熟悉到什么程度
问HashSet的问题?问个简单的Java技术问题
相关话题的讨论汇总
话题: mix话题: string话题: hashtable话题: public话题: int
进入Java版参与讨论
1 (共1页)
f*********i
发帖数: 197
1
我自己写了一个类
static class Mix{
public int a; double b; String c;
Mix(int a,double d,String c){
this.a=a;this.b=d;this.c=c;
}
public int hashCode(){
return 1;
}
}
在main函数中,我创建了两个一样的实例,但是hashtable认为他们是不一致的,我已
经重载了这个类的hashCode这个函数了啊。应该如何处理呢?
public static void main(String[] args)
Mix m1 = new Mix(1,0.53,"yes");
Mix m2 = new Mix(1,0.52,"yes");
System.out.println(m1.hashCode());
System.out.println(m2.hashCode());
Hashtablehash = new Hashtable();
hash.put(m1, m1.hashCode());
if(hash.get(m2)!=null)
System.out.println("found");
else
System.out.println("not found");
System.out.println(hash.get(m1));
}
输出
1
1
not found
1
如何才能让hashtable认为它们一致呢,是我写错了覆盖函数吗?
g*****g
发帖数: 34805
2
You also need to implement equals, always do these two in pair.

【在 f*********i 的大作中提到】
: 我自己写了一个类
: static class Mix{
: public int a; double b; String c;
: Mix(int a,double d,String c){
: this.a=a;this.b=d;this.c=c;
: }
: public int hashCode(){
: return 1;
: }
: }

f*********i
发帖数: 197
3
static class Mix{
public int a; double b; String c;
Mix(int a,double d,String c){
this.a=a;this.b=d;this.c=c;
}
public int hashCode(){
return 1;
}
public boolean equals(Mix mix){
if(this.hashCode()==mix.hashCode())
return true;
else
return false;
}
}
我已经override equals了,还是没有效果啊
g*****g
发帖数: 34805
4
This is not an override.
Try
public boolean equals(Object o)

【在 f*********i 的大作中提到】
: static class Mix{
: public int a; double b; String c;
: Mix(int a,double d,String c){
: this.a=a;this.b=d;this.c=c;
: }
: public int hashCode(){
: return 1;
: }
: public boolean equals(Mix mix){
: if(this.hashCode()==mix.hashCode())

r*****l
发帖数: 2859
5
Learn to use @Override

【在 f*********i 的大作中提到】
: static class Mix{
: public int a; double b; String c;
: Mix(int a,double d,String c){
: this.a=a;this.b=d;this.c=c;
: }
: public int hashCode(){
: return 1;
: }
: public boolean equals(Mix mix){
: if(this.hashCode()==mix.hashCode())

1 (共1页)
进入Java版参与讨论
相关主题
问个简单的Java技术问题answer Re: how HashMap/Hashtable compare key?
Leetcode ==> Max Points on a Line, 我的程序到底哪出问题了Java的工作面试主要考什么?主要是算法吗?
treemap和hashma p的问题java这个是什么逻辑?
Re: 谁有Java或Oracle的毒招 ?问HashSet的问题?
请教一段代码,关于hashCode()也问个 HashMap问题
问个set和literal String的问题我这个简单例子,怎么在actionListener里面拿到contentPane的instance?
问个Object.hashCode()的问题请教一个简单的问题
Object比较问个autoboxing的问题
相关话题的讨论汇总
话题: mix话题: string话题: hashtable话题: public话题: int