Hallo zusammen ich mal eine theoretische Frage :
Wenn ich eine einfache Klasse habe, die zwei String values hat.
Entscheidend die Equals Funktion.
Wenn ich nun einen Set habe und einen Instanz dieser Klasse einfüge :
Wie ihr seht, werden zwei unterschiedlich Objekte erzeugt und in einer HashSet eingefügt.
NUn wird aber test2 so verändert, dass es die gleichen Values hat wie test1. Nun meine Frage gibt es nun 2 gleiche Elemente in der HashSet oder nicht. Was ist eure Meinung bzw. kann mir jemand einen Tipp geben wo der Denkfehler liegt.
Vielen vielen Dank
Wenn ich eine einfache Klasse habe, die zwei String values hat.
Java:
public class Test {
private String value1;
private String value2;
public Test(String value1, String value2) {
this.value1 = value1;
this.value2 = value2;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public void setValue2(String value2) {
this.value2 = value2;
}
@Override
public boolean equals(Object obj) {
return ((Test) obj).value1.equals(value1) && ((Test) obj).value2.equals(value2);
}
}
Entscheidend die Equals Funktion.
Wenn ich nun einen Set habe und einen Instanz dieser Klasse einfüge :
Java:
Set<Test> testSet = new HashSet<>();
Test test1 = new Test("testValue1", "testValue2");
Test test2 = new Test("testValue12", "testValue22");
testSet.add(test1);
testSet.add(test2);
test2.setValue1("testValue1");
test2.setValue2("testValue2");
Wie ihr seht, werden zwei unterschiedlich Objekte erzeugt und in einer HashSet eingefügt.
NUn wird aber test2 so verändert, dass es die gleichen Values hat wie test1. Nun meine Frage gibt es nun 2 gleiche Elemente in der HashSet oder nicht. Was ist eure Meinung bzw. kann mir jemand einen Tipp geben wo der Denkfehler liegt.
Vielen vielen Dank