package feng.c7;import java.util.HashMap;class A2 {
private int count; public A2() {
} public A2(int count) {
this.count = count;
} @Override
public int hashCode() {
// TODO Auto-generated method stub
return this.count;
} @Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if (obj instanceof A2) {
A2 a = (A2) obj;
if (a.count == this.count) {
return true;
}
}
return false;
}
}class B2 {
@Override
public boolean equals(Object obj) {
return true;
}}public class TestHashMap2 {
public static void main(String[] args) {
HashMap hm = new HashMap();
hm.put(new A2(5675), new B2());
hm.put(new A2(60000), "JAVA");
hm.put(new A2(87563), "PHP");
System.out.println(hm);
System.out.println(hm.containsKey(new A2(121)));
System.out.println(hm.containsKey(new A2(5675)));
System.out.println(hm.containsValue("C++")); }
}最后一个不是应该输出true吗?为何程序运行后结果是false?
private int count; public A2() {
} public A2(int count) {
this.count = count;
} @Override
public int hashCode() {
// TODO Auto-generated method stub
return this.count;
} @Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if (obj instanceof A2) {
A2 a = (A2) obj;
if (a.count == this.count) {
return true;
}
}
return false;
}
}class B2 {
@Override
public boolean equals(Object obj) {
return true;
}}public class TestHashMap2 {
public static void main(String[] args) {
HashMap hm = new HashMap();
hm.put(new A2(5675), new B2());
hm.put(new A2(60000), "JAVA");
hm.put(new A2(87563), "PHP");
System.out.println(hm);
System.out.println(hm.containsKey(new A2(121)));
System.out.println(hm.containsKey(new A2(5675)));
System.out.println(hm.containsValue("C++")); }
}最后一个不是应该输出true吗?为何程序运行后结果是false?
摘自javadoc:
boolean containsValue(Object value)
如果此映射为指定值映射一个或多个键,则返回 true。更正式地说,当且仅当此映射至少包含一个 v 的以下映射关系时才返回 true:(value==null ? v==null : value.equals(v))。对于大多数 Map 接口的实现而言,该操作可能需要与映射大小呈线性关系的时间。
参数:
value - 测试在该映射中是否存在的值。
返回:
如果该映射将一个或多个键映射到指定值,则返回 true。
抛出:
ClassCastException - 如果该值对于此映射是不合适的类型(可选)。
NullPointerException - 如果该值为 null 并且此映射不允许 null 值(可选)。