hash写equals需要注意的地方

原创 2007年09月26日 19:48:00

 碰到这样一个问题,我在用hashmap的时候,map.containsKey(key)
我希望调用的是自己的equals方法,但是map就是不肯调用我的equals

后来解决了,因为hashmap用的是hash算法,equals比较特别
除了写equals,还要写一个

public int hashCode() {
// TODO Auto-generated method stub
return key1.hashCode()+key2.hashCode();
}

 

把equals中需要的值的hashcode返回出来

下面是一个实例

public class Keys implements Serializable{
 String key1;
 String key2;

 
/**
  * 
@return Returns the key1.
  
*/

 
public String getKey1() {
  
return key1;
 }

 
/**
  * 
@param key1 The key1 to set.
  
*/

 
public void setKey1(String key1) {
  
this.key1 = key1;
 }

 
/**
  * 
@return Returns the key2.
  
*/

 
public String getKey2() {
  
return key2;
 }

 
/**
  * 
@param key2 The key2 to set.
  
*/

 
public void setKey2(String key2) {
  
this.key2 = key2;
 }

 
 
public boolean equals(Object obkey)
 
{  
  Keys key
=(Keys)obkey;
  
if(key==null||key.getKey1()==null||key.getKey2()==null)
   
return false;
  
if(key.getKey1().equals(this.key1)&&key.getKey2().equals(this.key2))
   
return true;
  
return false;
 

 }

 
 
public String toString()
 
{
  String m
="key1:"+this.key1+"   key2:"+this.key2;
  
return m;
 }

 
/* (non-Javadoc)
  * @see java.lang.Object#hashCode()
  
*/

 
public int hashCode() {
  
// TODO Auto-generated method stub
  return key1.hashCode()+key2.hashCode();
 }

}

相关文章推荐

hashCode 和 equals 正确用法和需要注意的地方(面试基本都会问)

文章来源: https://www.oschina.net/question/82993_75533 文章目录:1、hashCode()和equals()的用法 2、重写默认实现 3、使用Apac...

重写equals时需要注意的地方

一。 在重写equals方法时,要注意满足离散数学上的特性1   自反性:对任意引用值X,x.equals(x)的返回值一定为true. 2   对称性:对于任何引用值x,y,当且仅当y.equals...
  • zyp_yun
  • zyp_yun
  • 2017年03月20日 14:56
  • 117

Hash Table 的几点注意的地方

影响hash Table design的3个factors: (1)hash function(散列函数) (2)Table size(散列的大小, 通常最开始是固定大小的) (3)collis...
  • a130737
  • a130737
  • 2014年08月23日 14:39
  • 466

【Unity3d】在Unity3d中调用外部程序及批处理文件,写自动化编译脚本需要注意的地方

如果调用外部普通应用程序, 比如notepad.exe 这样调用 static public bool ExecuteProgram(string exeFilename, string workDi...

写正确函数需要注意的地方:两个序列a,b,大小都为n,序列元素的值为任意整数,无序;要求通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小

int sum(int* arr, int count) { int sum=0; for(int i=0;i

Java开发者写SQL时常需要注意的8+13个地方

Java开发者写SQL时常需要注意的8+13个地方 (1)Understanding NULL Is this predicate correct with respect to NULL? ...

把二分查找算法写正确需要注意的地方<转>

原地址:http://www.cppblog.com/converse/archive/2009/09/21/96893.html把二分查找算法写正确需要注意的地方 今天再次解决一个需要使用二分查找...

写正确函数需要注意的地方:最大堆的创建与堆排序

void push_down(int* a, int indx,int count) { do { int leftindx=indx*2+1; int rightindx=leftin...

关于非独显PC机写openGL需要注意的地方

今天实验室弄了台新电脑,开始很高兴,以为是独显,可是一打开电脑才发现,电脑是非独显的。无奈。于是今天试了下载非独显电脑下试了下一个简单的openGL程序,所有的配置正确完成可是,遗憾的是,程序窗口显示...

hash code、equals和“==”三者的关系

转载于点击打开链接,仅供本人收藏使用 两个对象值相同(x.equals(y) == true),则一定有相同的hash code。   这是java语言的定义:  因为:Has...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hash写equals需要注意的地方
举报原因:
原因补充:

(最多只允许输入30个字)