Wie euch wohl auffällt, beschäftige ich mich zur Zeit mit Java.
Deshalb gleich nochmal eine Frage:
Hier findet man, zu der Methode contains folgendes:
Zitat:
contains
public boolean contains(Object o)
Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).
Dazu habe ich eine Klasse definiert, die das Interface Comparable und auch die Methode equals definiert.
Code:
public class Persons extends BeingsObject implements Comparable<Persons>{
private String personNumber;
public Persons(String personNumber){
this.personNumber = personNumber;
}
public String getpersonNumber() {
return this.personNumber;
}
@Override
public int compareTo(Persons otherperson) {
return personNumber.compareTo(otherperson.getpersonNumber());
};
public boolean equals(Persons r){
return this.personNumber.equals(r.personNumber);
}
}
Im Hauptprogramm habe ich ein Methode addPerson, die eine Peron erzeugt und einer ArrayList hinzufügt:
Code:
myBS.addPerson("Albert");
myBS.addPerson("James");
myBS.addPerson("MrSpock");
myBS.addPerson("Hetfield");
Interessant ist jetzt die Ausgabe:
Code:
Persons searchFor = new Persons("Albert");
System.out.println("persList contains Albert " +myBS.PersonsList.contains(searchFor)); // gibt false zurück
System.out.println("equal? "+myBS.PersonsList.get(0).equals(searchFor)); // gibt true zurück
Es gibt also ein Element, das die equlas Bedingung erfüllt, trotzdem gibt contains false zurück. Warum?