Übung Java Equals and Hashcode
Ausgangslage
Mit dieser Übung sollen die Methoden equals(...) und hashCode() implementiert werden.
Das folgende Listing zeigt die Klasse "Userid":
package ch.std.jpf2.collections.equalshashcode;
public class Userid {
 private String userid;
 private String password;
 public Userid() {
  this("", "");
 }
 public Userid(String userid) {
  this(userid, "");
 }
 public Userid(String userid, String password) {
  super();
  this.password = password;
  this.userid = userid;
 }
 
 @Override
 public String toString() {
  return "userid:" + userid + ", password:" + password;
 }
}package ch.std.jpf2.collections.equalshashcode;
import java.util.HashSet;
import java.util.Set;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
public class UseridTestCase {
 @Test
 public void testSameEquals() {
  Userid user1 = new Userid("hans", "123");
  Userid user2 = user1;
  Assert.assertSame(user1, user2);
  Assert.assertEquals(user1, user2);
 }
 @Test
 public void testNotSame() {
  Userid user1 = new Userid("hans", "123");
  Userid user2 = new Userid("peter", "456");
  Assert.assertNotSame(user1, user2);
 }
 @Test
 public void testEquals() {
  Userid user1 = new Userid("hans", "123");
  Userid user2 = new Userid("hans", "123");
  Assert.assertEquals(user1, user2);
 }
 @Test
 public void testHashcode() {
  Userid user1 = new Userid("hans", "123");
  Userid user2 = new Userid("hans", "123");
  Assert.assertEquals(user1.hashCode(), user2.hashCode());
 }
 @Test
 public void testSet() {
  Userid user1 = new Userid("hans", "123");
  Userid user2 = new Userid("hans", "123");
  Userid user3 = new Userid("peter", "456");
  Userid user4 = new Userid("peter", "456");
  
  Set useridSet = new HashSet();
  useridSet.add(user1);
  useridSet.add(user2);
  useridSet.add(user3);
  useridSet.add(user4);
  
  Assert.assertEquals(2, useridSet.size());
  
 }
}  Vorgehen
Integrieren Sie die beiden Klassen in ihre Entwicklungsumgebung und führen Sie den JUnit Test aus. Die letzten 3 Tests werden nicht funktionieren:

Implementieren Sie nun die fehlenden Methoden equals(...) und hashCode() in die Klasse Userid, so dass alle TestCases korrekt funktionieren.
Lösung
Eine mögliche Lösung finden Sie hier
