title: HashSet contains problem with custom objects
body: <p>My Custom class that will be contained by HashSet</p>
  
  <pre><code>public class Person {
      String name;
      int age;
  
      public Person(String name, int age) {
          this.name = name;
          this.age = age;
      }
  
      @Override
      public String toString() {
          return "Person{" +
                  "hashcode='" + this.hashCode() + '\'' +
                  "name='" + name + '\'' +
                  ", age=" + age +
                  '}';
      }
  
      @Override
      public boolean equals(Object o) {
          if (this == o) return true;
          if (!(o instanceof Person)) return false;
  
          Person person = (Person) o;
  
          if (age != person.age) return false;
          if (!name.equals(person.name)) return false;
  
          return true;
      }
  
      @Override
      public int hashCode() {
          int result = name.hashCode();
          result = 31 * result + age;
          return result;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public int getAge() {
          return age;
      }
  
      public void setAge(int age) {
          this.age = age;
      }
  }
  </code></pre>
  
  <p>My HashSet test that fails</p>
  
  <pre><code>   public void hashSetTest() {
          Set&lt;Person&gt;  personSet = new HashSet&lt;Person&gt;();
          Person p1 = new Person("raghu", 12);
          Person p2 = new Person("rimmu", 21);
  
          personSet.add(p1);
          personSet.add(p2);
  
  
         p1.setName("raghus");
         p1.setAge(13);
  
         int i2 =p1.hashCode();
         System.out.println(personSet.size() + ": "+ p1.hashCode()+" : "+personSet.contains(p1)+ " : "+i2);
      }
  </code></pre>
  
  <p>Iam expecting personSet.contains(p1) to pass. Why is it returning false?
  Thanks
  sri</p>