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();
 }

}

equals()方法与“==”的使用以及注意事项

equals()方法概念equals()方法是对象比较函数,按照对象比较,系统默认四个类复写该方法:Integer , String,Date,file 比较过程: 1.首先判断两个比较对象类...
  • qq_27760433
  • qq_27760433
  • 2017年06月05日 21:00
  • 491

Java重写equals时应注意的问题汇总

1 在改写equals时要遵守通用约定 2 改写equals时同时改写hashCode
  • kingzone_2008
  • kingzone_2008
  • 2013年10月28日 22:46
  • 5781

关于重载的概念和使用时的注意事项

本文对重载的概念和一些基本的常见用法作了一些归纳,供读者参阅。
  • qq_38234015
  • qq_38234015
  • 2017年04月24日 11:43
  • 425

Hash Table 的几点注意的地方

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

mysql查询注意事项

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。   2.应尽量避免在 where 子句中使用!=或   3.应尽量避免在 where 子句...
  • Z729685731
  • Z729685731
  • 2016年10月14日 14:43
  • 124

C语言需要注意的地方

今天看了一本C陷阱与指针的书,从中挑选了一些我自己平常不太注意的地方,或者有些是记不太清的东西,稍微整理了下有以下这些地方: 1:=与==是不同的,一个是赋值,一个是比较 2:&与&&是不同的,前...
  • chuhang_zhqr
  • chuhang_zhqr
  • 2016年01月27日 23:10
  • 495

写给自己的平时写代码要注意的地方

这些代码都是自己平时写代码的时候犯过错误的: // User u = new User(); 在这写就错了 while (rs.next()) { User u = new User(); // 在...
  • wuer0520
  • wuer0520
  • 2013年11月23日 22:53
  • 835

Code Review的一些注意事项(英文版)

当你进行Code Review的时候,你能很快发现问题吗?你能保证不遗留问题吗?下面是个Check List, 在Code Review结束后看一遍,查漏补缺,有助于吹毛求疵。以前在外企写的,懒得翻译...
  • ffmpeg4976
  • ffmpeg4976
  • 2015年01月02日 12:02
  • 294

有些需要注意的地方

1. CRichEditCtrl使用前如果未被初始化,错误信息会比较隐蔽,所以使用前应记得初始化AfxInitRichEdit();2. vs可视化界面产生的控件,比如按钮,如果绑定了控件变量,就不能...
  • darkduck9989
  • darkduck9989
  • 2007年10月22日 11:34
  • 618

Merge into的注意点之ORA-30926

大家可以看看:http://blog.sina.com.cn/s/blog_5d25646e0100qu17.html的内容,然后我再补充一点: 新建两张table :test_source和tes...
  • gua___gua
  • gua___gua
  • 2015年05月14日 16:08
  • 427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hash写equals需要注意的地方
举报原因:
原因补充:

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