LinkedList - Stack ... grundlegende Frage

papabaer1707

Aktives Mitglied
Hallo, ich habe mir etwas zu Listen und Stack angelesen und habe hier ein paar Nachfragen, bevor ich völlig falsch laufe ... wäre nett wenn etwas bestätigt oder korrigiert werden könnte ... danke schonmal im Voraus!

Quelltext (hier gefunden)
Code:
import java.util.LinkedList;

public class TL {

  public static void main(String[] args) {
  /*  LinkedList list = new LinkedList();
    list.add("Bier");
    list.add("Schnaps");
    System.out.println(list.getFirst());*/

    LinkedList<String> list = new LinkedList<String>();
    list.add("Bier");
    list.add("Schnaps");
    System.out.println(list.getFirst());
  }
}
Was genau ist der Unterschied der beiden Varianten? Wird in der 2. Variante eine Liste erzeugt, die lediglich Strings verwalten kann, in der Variante 1 ist der Typ egal?

Wenn ich mir die Methode der LinkedList ansehe, tauchen da eine Menge Methoden auf, die nicht wirklich zu einer Liste gehören (pop, peek, push, ...) sondern eher zu einem Stack oder einer Queue. Ist dies so gedacht, dass LinkedList universell angedacht ist - was ja durchaus sinnvoll sein kann. Stack gibt es auch (als Vektor), wobei, wenn ich das gelesene richtig interpretiere die Arbiet mit Vektoren einige Nachteile haben soll.

Kann mich da jemand erhellen?
 
Zuletzt bearbeitet:
>Wird in der 2. Variante eine Liste erzeugt, die lediglich Strings verwalten kann, in der Variante 1 ist der Typ egal?

Grundsätzlich ja. Aber wenn du irgendwas in die Liste packts, was ist dann das 365igste Element String, Banane oder Auto. Die Generics geben die Typ-sicherheit. Das ist eine List von Strings. Der Compiler schaut, dass da nur String rein kommen.

>Wenn ich mir die Methode der LinkedList anseh

Wenn du gegen das Interface programmierst siehts anderst aus.
Code:
List<String> list = new LinkedList<String>()
Code:
Deque<String> deq = ...

Vector ist eine "alte" implementierung der List. Sie ist synchronisiert.
 

Zurück
Oben