Когда HashSet вызывает равный метод? [Дубликат]

На этот вопрос уже есть ответ здесь:

Когда HashSet 'add' вызывает метод равняется? [Дубликат] 4 ответа

Я нашел этот пример в одном уроке.

когда я запускаю это, я получаю значение hs.size () равное 2 .. и метод equals вызывается только один раз

import java.util.HashSet;

public class HashTest {
    private String str;

    public HashTest(String str) {
        this.str = str;
    }

    @Override
    public String toString() {      
        return str;
    }

    @Override
    public int hashCode() {             
        return this.str.hashCode();
    }

    @Override
    public boolean equals(Object obj) { 
        System.out.println("calling equal method");
        if (obj instanceof HashTest) {

            HashTest ht = (HashTest) obj;
             System.out.println(ht.str);
            return this.str.equals(ht.str);
        }
        else
        {
            System.out.println("Not equal");
        }
        return false;
    }

    public static void main(String args[]) {
        HashTest h1 = new HashTest("1");
        HashTest h2 = new HashTest("1");
        String s1 = new String("2");
        String s2 = new String("2");

        HashSet<Object> hs = new HashSet<Object>();
        hs.add(h1);
        hs.add(h2);
        hs.add(s1);
        hs.add(s2);

        System.out.print(hs.size());
    }
}

когда вызов метода равных в вышеуказанной программе

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

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