There are two objects:
    private class Monkey{
        String name;
        public Monkey(String name) {
            this.name = name;
        }
        @Override
        public boolean equals(Object obj) {
            return name.equals(((Monkey) obj).name);
        }
    }
    @Test
    public void contain(){
       Monkey monkey1 = new Monkey("Jon");
       Monkey monkey2 = new Monkey("Jon");
        java.util.Set<Monkey> monkeySet = new HashSet<>();
       monkeySet.add(monkey1);
       System.out.println(monkeySet.contains(monkey2));
       // false
       monkeySet.add(monkey2);
       System.out.println(monkeySet.size());
       // 2
    }
With HashSet,it think monkey1 and monkey2 are not same object. But in my project, if monkey1.name == monkey2.name, then they should be same.
What can I do to make HashSet think monkey1 and monkey2 is same ?
 
     
    