Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste

Eggi

Mitglied
Hallo zusammen!

Ich bitte um Hilfe bei folgenden Beispiel. Die doppelt-verlinkte Liste Company soll Objekte der Klasse Employee verwalten.

Problem: Wie kann ich die Objekte ab.- bzw. aufsteigend nach der employee_number sortieren?

Hätte versucht bei der Methode insert das abzuprüfen:
e.getEmployee_number() > p.getEmployee_number()

Funktioniert leider nicht.

Vl habt ihr ja eine Idee.
THX


Klasse Employee
Java:
public class Employee {
    
    // Attributes
    private String firstName;
    private String lastName;
    private long employee_number;
    private double salary;
    
    Employee next;
    Employee prev;
    
    // Constructor
    public Employee(String firstName, String lastName, Double salary) {
	this.firstName = firstName;
	this.lastName = lastName;
	this.salary = salary;
	this.employee_number = (long) (Math.random() * 10000000000L);
	next = null;
	prev = null;
    }
    
    // Getter & Setter Methods
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public long getEmployee_number() {
        return employee_number;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    
    // Methods
    @Override
    public String toString(){
	String  employee_info = "#"+this.getEmployee_number()+", "+this.getFirstName()+" "+this.getLastName() + "[salary="+this.getSalary()+"]";
	return employee_info;
    }
    
}

Klasse Company
Java:
public class Company {
	
	// Attributes
	Employee head = null;
	Employee tail = null;
	
	// Methods
	void insert (Employee e){
	    Employee p = head;
	    if(head == null){
		head = tail = new Employee(e.getFirstName(), e.getLastName(), e.getSalary());
	    } else {
		while(p != null && e.getEmployee_number() > p.getEmployee_number()){
		    p = p.next;
		} // while
		if(p == null){
		    p = new Employee(e.getFirstName(), e.getLastName(), e.getSalary());
		    tail.next = p;
		    p.prev = tail;
		    tail = p;
		} else {
		    Employee q = new Employee(e.getFirstName(), e.getLastName(), e.getSalary());
		    q.next = p;
		    q.prev = p.prev;
		    
		    if(p == head){
			head = q;
		    } else {
			p.prev.next = q;
		    } // else
		    p.prev = q;
		} // else
	    } // else
	} // end method insert
	
	void delete(Employee e){
	    Employee p = head;
	    while(p != null && e.getEmployee_number() > p.getEmployee_number()){
		p = p.next;
	    } // while
	    if(p != null && e.getEmployee_number() == p.getEmployee_number()){
		if (p == head) {
			head = p.next;
			if (head == null) tail = null; else head.prev = null;
		} else if (p.next == null) {
			tail = p.prev; tail.next = null;
		} else {
			p.prev.next = p.next;
			p.next.prev = p.prev;
		}// else
	    }// if(p != null && e.getEmployee_number() == p.getEmployee_number())
	}// end method delete
	
	
	void print() {
		for (Employee p = head; p != null; p = p.next){
		    System.out.println(p);
		} // for
	}// end method print

} // end of class Company

Klasse Company-Test

Java:
public class CompanyTest {

    public static void main(String[] args) {
	
	Employee a = new Employee("Max", "Mustermann", 3456.12);
	Employee b = new Employee("Franz", "Mustermann", 4525.12);
	Employee c = new Employee("Karl", "Mustermann", 5251.12);
	Employee d = new Employee("Hans", "Mustermann", 3245.12);
	
	Company test = new Company();
	test.insert(a);
	test.insert(b);
	test.insert(c);
	test.insert(d);
	
	System.out.println("Currently hired:");
	test.delete(a);
	test.print();

    }

}
 
H

hüteüberhüte

Gast
BubbleSort würde sich dafür ja anbieten (größere Elemente steigen wiederholt nach oben)
 
M

Marcinek

Gast
Irgendwie finde ich die Antwort lustig. Könnte nun behaupten, dass bei jedem sortalgo die Daten aufsteigen.

Hier würde sich ein einfacher insertsort also direkt nach einfügen eignen, da man eine Double linked List hat. Kann man beschießend hoch und runter iterieren.

Wenn jedoch der Vergleich von Mitarbeiter nochmal möglich ist, haben wir ein Problem.
 

Bleiglanz

Gesperrter Benutzer
Klarstellung erforderlich:

soll die Liste IMMER sortiert sein (auf/absteigend ist bei doppelt verkettet ja egal), d.h. soll ein INSERT immer an der richtigen Stelle sein

oder

soll die Liste so rumliegen und ggf. nach einem Kriterium sortiert werden?
 

Eggi

Mitglied
Danke erstmals für eure Antworten.

Die Liste sollte immer in absteigender Reihenfolge sein. Jedoch solle es eine Methode geben, die die Liste auch aufsteigend ordnet. Alle Elemente werden immer nach der employee_number sortiert.

Noch eine Sache die nicht funzt --> die delete Methode macht nicht was sie soll. Bitte seid so nett und schaut mal drüber. DANKE
 
Zuletzt bearbeitet:

Bleiglanz

Gesperrter Benutzer
delete ist komisch, warum gehst du nicht einfach beim head beginnend mit next immer weiter bis due die richtige referenz hast?

absteigend ist auch komisch, schreibe einen wrapper, bei dem head/tail und next/previous vertauscht sind und der die gleichen Daten benutzt?
 

Eggi

Mitglied
Verstehe nicht was komisch an der delete Methode ist.

Die Schleife sollte passen. Durch die weiteren if Abfragen werden Sonderfälle behandelt, zB Zeiger ist beim ersten Element usw...es muss gewährleistet sein das jedes Element auf einen Vorgänger bzw. Nachfolger zeigt, das steht in der Aufgabenstellung.

Wrapper Klasse kenn ich nicht, aber werd mich mal einlesen wie das funktioniert.
 
Zuletzt bearbeitet:

Eggi

Mitglied
Habs jetzt geschafft. Bei der insert Methode war der Hund begraben.
Zum Bsp head = tail = e; --> hier hatte ich head = tail = new Employee(usw...);

Jetzt fehlt nurmehr das sortieren.

Java:
void insert (Employee e){
	    Employee p = head;
	    if(head == null){ // if list is empty
		head = tail = e;
	    } else {
		while(p != null && e.getEmployee_number() > p.getEmployee_number()){
		    p = p.next;
		} // while
		if(p == null){
		    p = e;
		    tail.next = p;
		    p.prev = tail;
		    tail = p;
		} else {
		    Employee q = e;
		    q.next = p;
		    q.prev = p.prev;
		    
		    if(p == head){
			head = q;
		    } else {
			p.prev.next = q;
		    } // else
		    p.prev = q;
		} // else
	    } // else
	} // end method insert
 
H

hüteüberhüte

Gast
Irgendwie finde ich die Antwort lustig. Könnte nun behaupten, dass bei jedem sortalgo die Daten aufsteigen.

Wie würdest du den BubbleSort in einem Halbsatz halbwegs zutreffend beschreiben? :D

aber back on topic, SelectionSort ginge natürlich auch, wenn Elemente immer hinten oder vorne (wieder)eingefügt werden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
J Array mit Objekten sortieren Java Basics - Anfänger-Themen 11
L ArrayList mit Objekten sortieren Java Basics - Anfänger-Themen 3
H Liste mit Objekten sortieren Java Basics - Anfänger-Themen 2
J Vector mit Objekten sortieren Java Basics - Anfänger-Themen 10
C sortieren von Arrays mit beliebigen Objekten Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
J Sortieren Java Basics - Anfänger-Themen 21
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben