我想通过查询hashMap中是否以含有该对象,来决定是否需要存放入hashMap中.
我有一个类
package iss.com.equals;import java.util.Date;class CountIsable { private Date date; private String accountNo; private String bankCode;
public CountIsable(Date transactionTime, String accountNo, String bankCode) {
this.date = transactionTime;
this.accountNo = accountNo;
this.bankCode = bankCode;
} public CountIsable(String accountNo, String bankCode) {
this.accountNo = accountNo;
this.bankCode = bankCode;
} public boolean equals(CountIsable mapKey) {
if (DateUtil.compareDate(date, mapKey.getDate()) == 0
&& accountNo.equals(mapKey.getAccountNo())) {
if (mapKey.getBankCode() == null
|| mapKey.getBankCode().equals(bankCode))
return true;
}
return false;
}
public int hashCode() {
return 1;
} public String getAccountNo() {
return accountNo;
} public String getBankCode() {
return bankCode;
} public Date getDate() {
return date;
}}下面是测试用例
package iss.com.equals;import java.util.Date;
import java.util.HashMap;public class TestEquals { public static void main(String[] args)
{
HashMap importMap=new HashMap(8);
Date date=new Date();
String accountNo="1";
String bankCode="1";
CountIsable one=new CountIsable(date,accountNo,bankCode);
CountIsable two=new CountIsable(date,accountNo,bankCode);
CountIsable three=new CountIsable(date,accountNo,bankCode);
CountIsable four=new CountIsable(date,accountNo,bankCode);
importMap.put(one,"1");
importMap.put(two,"2");
importMap.put(three,"3");
if(importMap.containsKey(four))
{
System.out.println(importMap.size());
System.out.println("--------------"+(String)importMap.get(one));
}
else
{
System.out.println("no object!");
}
}
}
程序输出为no object!,是什么原因导致key找不到
我有一个类
package iss.com.equals;import java.util.Date;class CountIsable { private Date date; private String accountNo; private String bankCode;
public CountIsable(Date transactionTime, String accountNo, String bankCode) {
this.date = transactionTime;
this.accountNo = accountNo;
this.bankCode = bankCode;
} public CountIsable(String accountNo, String bankCode) {
this.accountNo = accountNo;
this.bankCode = bankCode;
} public boolean equals(CountIsable mapKey) {
if (DateUtil.compareDate(date, mapKey.getDate()) == 0
&& accountNo.equals(mapKey.getAccountNo())) {
if (mapKey.getBankCode() == null
|| mapKey.getBankCode().equals(bankCode))
return true;
}
return false;
}
public int hashCode() {
return 1;
} public String getAccountNo() {
return accountNo;
} public String getBankCode() {
return bankCode;
} public Date getDate() {
return date;
}}下面是测试用例
package iss.com.equals;import java.util.Date;
import java.util.HashMap;public class TestEquals { public static void main(String[] args)
{
HashMap importMap=new HashMap(8);
Date date=new Date();
String accountNo="1";
String bankCode="1";
CountIsable one=new CountIsable(date,accountNo,bankCode);
CountIsable two=new CountIsable(date,accountNo,bankCode);
CountIsable three=new CountIsable(date,accountNo,bankCode);
CountIsable four=new CountIsable(date,accountNo,bankCode);
importMap.put(one,"1");
importMap.put(two,"2");
importMap.put(three,"3");
if(importMap.containsKey(four))
{
System.out.println(importMap.size());
System.out.println("--------------"+(String)importMap.get(one));
}
else
{
System.out.println("no object!");
}
}
}
程序输出为no object!,是什么原因导致key找不到
importMap.put(one,"1");
importMap.put(two,"2");
importMap.put(three,"3");
importMap.put(four,"4");//加上就行了!
if(importMap.containsKey(four))
CountIsable one=new CountIsable(date,accountNo,bankCode);
CountIsable two=new CountIsable(date,accountNo,bankCode);
CountIsable three=new CountIsable(date,accountNo,bankCode);
这3个就是3个不同的对象!
去翻一下jdk文档吧查一下Object的hashcode方法吧!