请教一段代码,关于hashCode()# Java - 爪哇娇娃
h*a
1 楼
代码如下:
import java.util.*;
class MapEQ {
public static void main(String[] args) {
Map m = new HashMap();
ToDos t1 = new ToDos("Monday");
ToDos t2 = new ToDos("Monday");
ToDos t3 = new ToDos("Tuesday");
m.put(t1, "doLaundry");
m.put(t2, "payBills");
m.put(t3, "cleanAttic");
System.out.println(m.size());
} }
class ToDos{
String day;
ToDos(String d) { day = d; }
public boolean equals(Object o) {
return ((ToDos)o).day == this.day;
}
//public int hashCode() { return 9; }
}
如果注释掉最后一行 //public int hashCode() { return 9; },output 是 3
如果加上最后一行, output 是 2
请解释两种情况的差异,谢谢!
import java.util.*;
class MapEQ {
public static void main(String[] args) {
Map
ToDos t1 = new ToDos("Monday");
ToDos t2 = new ToDos("Monday");
ToDos t3 = new ToDos("Tuesday");
m.put(t1, "doLaundry");
m.put(t2, "payBills");
m.put(t3, "cleanAttic");
System.out.println(m.size());
} }
class ToDos{
String day;
ToDos(String d) { day = d; }
public boolean equals(Object o) {
return ((ToDos)o).day == this.day;
}
//public int hashCode() { return 9; }
}
如果注释掉最后一行 //public int hashCode() { return 9; },output 是 3
如果加上最后一行, output 是 2
请解释两种情况的差异,谢谢!