Hallo,
folgende Aufgabe will nicht so recht hinhauen.
Aufgabe:
Gegeben sind die folgenden zwei Java-Klassen Person und Beruf. Modifizieren Sie beide Klassen, so dass eine Liste list von Personen durch einen Aufruf von Collections.sort(list) wie folgt sortiert wird:
1. Sortierkriterium: Aufsteigend nach dem Gehalt, das dem Beruf der Person entspricht.
2. Sortierkriterium: Absteigend nach der Größe (size) der Person.
Personenklasse:
Klasse Beruf:
Meine Klassen sehen so aus:
Beruf
Person
Main
Als Ausgabe erhalte ich die Liste in der Reihenfolge wie ich sie eingegeben habe.
Danke
folgende Aufgabe will nicht so recht hinhauen.
Aufgabe:
Gegeben sind die folgenden zwei Java-Klassen Person und Beruf. Modifizieren Sie beide Klassen, so dass eine Liste list von Personen durch einen Aufruf von Collections.sort(list) wie folgt sortiert wird:
1. Sortierkriterium: Aufsteigend nach dem Gehalt, das dem Beruf der Person entspricht.
2. Sortierkriterium: Absteigend nach der Größe (size) der Person.
Personenklasse:
Java:
public class Person {
public String name;
public int size;
public Beruf beruf;
}
Klasse Beruf:
Java:
public class Beruf {
public String name;
public float gehalt;
}
Meine Klassen sehen so aus:
Beruf
Java:
public class Beruf {
public String name;
public float gehalt;
public Beruf(String name, float gehalt){
this.name= name;
this.gehalt=gehalt;
}
.
.
.Getter/Setter
Person
Java:
public class Person implements Comparable{
public String name;
public int size;
public Beruf beruf;
//Diese Methode sollte eig. sortieren, funktioniert aber nicht
public int CompareTo(Object o){
if(o instanceof Person){
Person p1 = (Person) o;
//Erstes Sortierkriterium - nach Gehalt aufsteigend
if(this.getBeruf().getGehalt()<p1.getBeruf().getGehalt()){
return -1;
}
if(this.getBeruf().getGehalt()>p1.getBeruf().getGehalt()){
return 1;
}
// Zweites Sortierkriterium - nach Größe absteigend
if(this.getSize()<p1.getSize()){
return 1;
}
if(this.getSize()>p1.getSize()){
return -1;
}
}
return 0;
}
//Konstruktor
public Person(String name, int size, Beruf beruf){
this.name=name;
this.size=size;
this.beruf=beruf;
}
.
.
.Getter/Setter
Main
Java:
public class Main {
public static void main(String[] args) {
Beruf b1 = new Beruf("Mechaniker", 5000);
Person p1 = new Person("Thomas1 ", 1500, b1);
Beruf b2 = new Beruf("Tischler", 3000);
Person p2 = new Person("Thomas2 ", 500, b2);
Beruf b3 = new Beruf("Schreiner", 3500);
Person p3 = new Person("Thomas3 ", 5000, b3);
Beruf b4 = new Beruf("Maurer", 100);
Person p4 = new Person("Thomas4 ", 750, b4);
Beruf b5 = new Beruf("Koch", 2750);
Person p5 = new Person("Thomas5 ", 300, b5);
Beruf b6 = new Beruf("Techniker", 3000);
Person p6 = new Person("Thomas6 ", 200, b6);
Beruf b7 = new Beruf("Maler", 50000);
Person p7 = new Person("Thomas7 ", 100, b7);
ArrayList <Person> list = new ArrayList <Person>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
list.add(p6);
list.add(p7);
Collections.sort(list);
print(list);
}
public static void print(ArrayList <Person> p2){
for(Person current : p2){
System.out.println(current.getName()+" "+current.getSize()+" "+current.getBeruf().name+" "+ current.getBeruf().getGehalt());
}
}
Als Ausgabe erhalte ich die Liste in der Reihenfolge wie ich sie eingegeben habe.
Danke
Zuletzt bearbeitet von einem Moderator: