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
Klasse Company
Klasse Company-Test
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();
}
}