Как HashSet проверяет два объекта? - PullRequest
0 голосов
/ 25 февраля 2020
class TestA extends Foo{
   private String a;
   private String b;
   private String c;

   public int hashcode() {
     // Use some inbuilt hashcode generator over a, b, c.
   }

   public boolean equals(Object a) {
     // a, b, c instance variables should match
   }
}
class TestB Extends Foo{
   private String a;
   private String b;
   private String c;

   public int hashcode() {
     // Same as Test A class implementation
   }

   public boolean equals(Object a) {
     // Same as Test A class implementation
   }
}

Скажем, я добавил следующий объект в HashSet:

TestA a = new TestA("a", "b", "c")

set.add(a);

Теперь, если я проверю, что следующий объект b находится в хэш-наборе, будет ли set.contains(b) всегда возвращать true?

TestB B = new TestB("a", "b", "c")

1 Ответ

0 голосов
/ 25 февраля 2020

Поскольку ваш HashSet должен быть HashSet<TestA>, вы даже не сможете скомпилировать передачу экземпляра TestB в качестве параметра в , содержащую .

...