Hallo zusammen,
ich bin gerade bei der Programierung meiner eigenen einfach verketteten Liste, ohne Java Collection Framework zu benutzen, um mir genauer die Datenstrukturen bzw. Referenztypen anzuschauen.
Ich habe 3 Klassen:
Meine Frage betrifft die Implementierung der Methode
Die steht gerade in meinem Code nicht.
Die schon implementierte Methoden funktionieren, bzw. liefern das gewunschte Verhalten.
Ich hatte schon vieles ausprobieren, und es gibt immer diese zwei Ergebnisse bei meiner Implementirung von der Methode
Mein erster Vorschlag war:
Und zweiter:
Hier terminiert das Programm nicht, es ensteht eine endlose Schleife.
Bei der Testklasse habe ich:
Das Sollte als Ergebnis liefern:
dummy1 dummy1, 1000.0
dummy dummy, 0.0
Ist so aber nicht.
Ich weiß es nicht warum, wie ich das richtig korriegiere.
Ich warte auf eure Vorschläge.
Grüße
ich bin gerade bei der Programierung meiner eigenen einfach verketteten Liste, ohne Java Collection Framework zu benutzen, um mir genauer die Datenstrukturen bzw. Referenztypen anzuschauen.
Ich habe 3 Klassen:
- Mitarbeiter
Java:
public class Mitarbeiter {
private String name;
private String vorname;
private double gehalt;
public Mitarbeiter(String s1, String s2, double d) {
this.name = s1;
this.vorname = s2;
this.gehalt = d;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getGehalt() {
return gehalt;
}
public void setGehalt(double gehalt) {
this.gehalt = gehalt;
}
public String toString() {
return this.getName() + " " + this.getVorname() + ", "
+ this.getGehalt();
}
}
- ListOfMitarbeiter
Java:
public class ListOfMitarbeiter {
private Mitarbeiter data;
private ListOfMitarbeiter next;
/**
* Creates a list with only one element
*
* @param data
*/
public ListOfMitarbeiter(Mitarbeiter data) {
this.data = data;
this.next = null;
}
/**
* Creates a list with new element Data and leaves the rest elements List
*
* @param data
* @param list
*/
public ListOfMitarbeiter(Mitarbeiter data, ListOfMitarbeiter list) {
this.data = data;
this.next = list;
}
public ListOfMitarbeiter() {
// TODO Auto-generated constructor stub
}
public Mitarbeiter getMitarbeiter() {
return data;
}
public void setMitarbeiter(Mitarbeiter mitarbeiter) {
this.data = mitarbeiter;
}
public ListOfMitarbeiter getNext() {
return next;
}
public void setNext(ListOfMitarbeiter next) {
this.next = next;
}
/**
* List to String, uses the toString methode from the Class Mitarbeiter
* Result collects whe whole information and returns it
*/
public String toString() {
ListOfMitarbeiter current = this;
String result = "";
while (current != null) {
result += current.data + "\n";
current = current.next;
}
return result;
}
/**
* Checks the number of elements in current List
*
* @return
*/
public int size() {
ListOfMitarbeiter current = this;
int counter = 0;
while (current != null) {
counter++;
current = current.next;
}
return counter;
}
/**
* Adds the element Data at the end of the List
*
* @param data
*/
public void addLast(Mitarbeiter data) {
ListOfMitarbeiter current = this;
int i = 0;
int size = current.size();
while (i < size) {
if (current.next == null) {
current.next = new ListOfMitarbeiter(data);
}
current = current.next;
i++;
}
}
public void add(Mitarbeiter data) {
setMitarbeiter(data);
}
}
- und eine Klasse Test
Meine Frage betrifft die Implementierung der Methode
Java:
public void addFirst(Mitarbeiter data)
Die schon implementierte Methoden funktionieren, bzw. liefern das gewunschte Verhalten.
Ich hatte schon vieles ausprobieren, und es gibt immer diese zwei Ergebnisse bei meiner Implementirung von der Methode
Java:
public void addFirst(Mitarbeiter data)
- das Programm terminiert nicht
- das übergegebene Objekt data wird erst nach dem ersten Objekt angehängt
Mein erster Vorschlag war:
Java:
public void addFirst(Mitarbeiter data) {
this.next = new ListOfMitarbeiter(data, next);
}
Und zweiter:
Java:
public void addFirst(Mitarbeiter data) {
ListOfMitarbeiter current = this;
this.next = new ListOfMitarbeiter(data, current);
}
Hier terminiert das Programm nicht, es ensteht eine endlose Schleife.
Bei der Testklasse habe ich:
Java:
ListOfMitarbeiter myList = new ListOfMitarbeiter(m1);
myList.add(new Mitarbeiter("dummy", "dummy", 0000.00));
myList.addFirst(new Mitarbeiter("dummy1", "dummy1", 1000.00));
Das Sollte als Ergebnis liefern:
dummy1 dummy1, 1000.0
dummy dummy, 0.0
Ist so aber nicht.
Ich weiß es nicht warum, wie ich das richtig korriegiere.
Ich warte auf eure Vorschläge.
Grüße