Wenn Sie dann == vergleichen, wird es falsch.
String überschreibt HashCode () und equals ().
Das obige ist gleich
True, wenn das Objekt dieselbe Adresse hat
False, wenn die Vergleichszeichenfolgenklasse nicht String ist
False, wenn die Klassenlängen der Vergleichszeichenfolgen nicht gleich sind 4, vergleiche in Schleife, falsch, wenn falsch
True, wenn die Schleife abgeschlossen ist
HashCode () und equals () alleine
private static class Person { int age; String name;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + " - " +age;
}
/**
* @desc
*/
@Override
public boolean equals(Object obj){
if(obj == null){
return false;
}
if(this == obj){
return true;
}
if(this.getClass() != obj.getClass()){
return false;
}
Person person = (Person)obj;
return name.equals(person.name) && age==person.age;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
Beispielcode https://github.com/YanHengGo/java/tree/master/04_hashcode
Recommended Posts