Frage von cmrrr, 26

Wieso sind bei dem Beispiel 2 Konstruktoren nötig (s.unten)?

Hier ein kleiner Ausschnitt einer List: public class List {

    private List next;
private List previous;

    public List() { 
    this.next = next;
    this.previous = previous;
   }

  public List(List next, List previous){
      this.next = next;
      this.previous = previous;  
  }

}

Das ist der Ausschnitt einer doppelt verketteten Liste. Ich würde gerne eine Erklärung erhalten, weswegen hier 2 Konstruktoren "public List()" und "public List(List next, List previous) notwendig sind.

Danke für eure Hilfe. LG

Antwort
von Borgler94, 5

ich würd es eher so machen

kopiert von  http://stackoverflow.com/questions/4066729/creating-a-linkedlist-class-from-scra... 

public class LinkNode { 

String data;
LinkNode next;

public LinkNode(String item) {

data = item;

}

}

public class LinkedList {

LinkNode head;

public LinkedList(String item) {

head = new LinkNode(item);

}

public void add(String item) {

//pseudo code: while next isn't null, walk the list
//once you reach the end, create a new LinkNode and add the item to it. Then
//set the last LinkNode's next to this new LinkNode

}

}

ich würd diese noch auf generische Typen umändern (hierzu eine kleine Einführung)
https://docs.oracle.com/javase/tutorial/java/generics/types.html

Antwort
von regex9, 2

Wenn eine neue Liste erstellt wird, ist nicht immer von Beginn an klar, welche Elemente sie beinhalten soll. Daher ist es praktisch, einen Default-Konstruktor zu erstellen, der den Root (oder andere Knoten) erst einmal auf null setzt.

Antwort
von Borgler94, 5

die Liste ist generell nicht gut gemacht... man sollte eine Liste immer aus zwei Klassen aufbaun ... einer Klasse List und einer ListNode Klasse

btw. der erste Konstruktor ist falsch

Antwort
von triopasi, 18

Der erste Konstruktor ist schlicht falsch...

Antwort
von geri3d, 6

Im 1. Konstuktor ohne Parameter bewirkt das

    this.next = next;
this.previous = previous;


genau gar nichts, weil die Variablen auf das gleiche Objekt(Liste) verweisen.
Hier wird gar nichts initalisiert, wie tiropasi geschrieben hat schlicht falsch.


Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten