Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine Klasse Mitarbeiter, die u.a. den Namen und die Überstunden eines Mitarbeiter beinhaltet. Jeden Mitarbeiter habe ich in einen Vektor gepackt:
Code:
/*getMitarbeiterGesamt: Anzahl der Mitarbeiter
mitarbeiternamenvektor: Vektor, der alle Mitarbeiternamen (String) enthält)*/
for (int i=0; i<mitarbeiter.getMitarbeiterGesamt(); i++){
mitarbeitervektor.add(new Mitarbeiter(mitarbeiternamenvektor.get(i)));
}
Nun soll dieser Vektor sortiert werden, und zwar nach Überstunden. Es soll also der Mitarbeiter, der am wenigsten Überstunden hat, an erster Stelle stehen usw. Die Überstunden eines mitarbeiters können mit getUeberstunden geholt werden.
Wie mach ich das am Besten? Kann ich das sort der Collection-Klasse nehmen? Wenn ja, wie?
Okay, habs mal probiert, dass ist dabei rausgekommen:
Code:
public class Mitarbeiter implements Comparable{
private int stunden_gearbeitet;
public Mitarbeiter(String name){
//irrelevant
}
public int getStundenGearbeitet(){return stunden_gearbeitet;}
//damit kann man per Collection.sort(Object[]) sortieren
public int compareTo(Object o){
return 0;
}
public int compareTo(Mitarbeiter m){
Integer i = new Integer(stunden_gearbeitet);
return(i.compareTo(m.getStundenGearbeitet()));
}
}
Ist es so richtig (konnt es noch nicht ausprobieren, obs tatsächlich klappt...)?
Und warum funktioniert folgendes nicht:
Code:
public class Mitarbeiter implements Comparable{
private int stunden_gearbeitet;
public Mitarbeiter(String name){
//irrelevant
}
public int getStundenGearbeitet(){return stunden_gearbeitet;}
//damit kann man per Collection.sort(Object[]) sortieren
public int compareTo(Object o){
return 0;
}
public int compareTo(Mitarbeiter m){
return(stunden_gearbeitet.compareTo(m.getStundenGearbeitet()));
}
}
das interface Comparable hat die Methode compareTo(Object o) - die du auch implementierst. nur gibt diese immer 0 zurück. Die compareTo methode mit Mitarbeiter als Argument wird nie aufgerufen (also kann auch nichts sortiert werden).
also entweder den Code von der Mitarbeiter in die Objekt Methode reinhauen oder java1.5. nutzen und das generische COmparable Interface nutzen
Code:
public class Mitarbeiter implements Comparable<Mitarbeiter> {
// ....
public int compareTo(Mitarbeiter m) {
return .....;
}
}