Понимание работы equals и hashCode в HashMap

У меня есть этот тестовый код:

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; } не комментируетсяm.size() возвращает 2, когда этооставил комментарий, он возвращает три. Зачем?

Ответы на вопрос(9)

Ваш ответ на вопрос