В приведенном ниже коде вы вызываете метод overriden .equals ().
public boolean equals2 (Object object2) {if (a.equals (object2)) {// здесь вы вызываете override, поэтому вы получаете ложь 2 раза. return true; } else return false; }