Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun

bindankbar

Mitglied
Hi, ich soll in einer Methode eine verkettete Liste durchgehen. Ich soll dabei prüfen, ob die Elemente mit einem Buchstaben anfangen, den ich vorher der Methode gebe. Wenn ja soll ich dieses Element in eine neue Liste tun und die Liste später zurückgeben.

Den Vergleich bekomme ich hin, also zu prüfen, ob das Element mit einem bestimmten Buchstaben anfängt. Aber in was für eine Liste kann ich die Elemente packen, ein Array geht nicht, da ich vorher nicht weiß wie viele Treffer ich habe und ich die Länge vorher nicht bestimmen kann oder?
Deshalb müsste ich es, da ich nur Arrays und verkettete Listen kennengelernt habe, es in eine verkettete Liste tun, denke ich mal, aber wie sieht sowas aus? Wie mache ich in einer Methode eine verkette Liste und füge da immer ein bestimmtes Element hinzu. Und welchen Datentyp muss ich der Methode geben, damit man eine ganze Liste zurück geben kann?
 

Oneixee5

Top Contributor
Die Methode benötigt als Rückgabe nur List. List ist ein Interface, das Methodensignaturen für alle von einer List bereitgestellten Funktionen vereinbart. Somit wirst du unabhängig von einer konkreten Art von Liste.
Java:
    List<String> list = filerList(Arrays.asList("aa", "ba", "!a"), "a");



    private static List<String> filerList(List<String> list, String filter) {
        List<String> filtered = new ArrayList<>(); //new LinkedList<>();
      
        // add matches from list to filtered list
      
        return filtered;
    }
 

temi

Top Contributor
Deshalb müsste ich es, da ich nur Arrays und verkettete Listen kennengelernt habe, es in eine verkettete Liste tun
Ich würde raten, dass du damit Recht hast, dass du eine neue verkettete Liste (analog zu der, die du durchsuchen sollst) erstellen sollst.

Wie kommen denn die Elemente in die bestehende (verkettete) Liste?

Handelt es sich um die von Java bereitgestellte LinkedList, oder um eine selbst programmierte Klasse?

Dann schau, ob die passende Methoden hat, um ein Element hinzuzufügen.

Und welchen Datentyp muss ich der Methode geben, damit man eine ganze Liste zurück geben kann?
Falls es sich um eine selbst erstellte verkettete Liste (Klasse) handelt, dann entspricht der Datentyp genau dieser Listenklasse.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Ich vermute, dass es eine eigens implementierte LinkedList ist, die ihr verwendet und wenn es eine entsprechende Übung zu abstrakten Datentypen geht, dann wäre die Übung an dieser Stelle, dass Du Dir das erst einmal aufmalst: Wie genau sieht die LinkedListe aus, die Du derzeit hat und was genau soll das Resultat sein?

Falls ihr gewisse Funktionen schon habt, dann ist Funktionalität übernehmbar. Das Löschen eines Elements wird vom Prinzip her genau das sein, was DU brauchst, um ein Element aus der Liste heraus zu nehmen. Das Einfügen eines Elements wird genau das machen, was Du brauchst, um ein Element einzufügen.

Daher ist aber halt zwingend notwendig, dass die Klasse LinkedList, die Ihr habt, komplett verstanden wurde. Das ist eine existenzielle Basis und jede Erklärung kann nur dann zielführend sein, wenn diese Basis vorhanden ist.

Wenn ja soll ich dieses Element in eine neue Liste tun und die Liste später zurückgeben
Und welchen Datentyp muss ich der Methode geben, damit man eine ganze Liste zurück geben kann?
Da ihr ja vermutlich nur eure eigene LinkedList habt, ist auch das genau der Datentyp, den ihr verwenden sollt / müsst. Es geht ja gerade darum, euer Wissen zu diesem Datentyp zu vertiefen.

Und da ist es dann vermutlich so, dass ihr gewisse Grundlagen schon haben werdet (wie @temi schon sagte): Ihr werdet ja schon LinkedLists angelegt und mit Elementen gefüllt haben. Irgend welche Operationen werdet Ihr schon haben. Und daher bin ich sehr sicher, Du Du prinzipiell schon Code hast, um eine Liste zu erzeugen und da Elemente hinzu zu fügen. (Wie hättest Du sonst im anderen Thread etwas machen können?)

Daher wären zwei Punkte ganz wichtig:
a) Bei Fragen brauchen wir Details. Du lieferst uns keinerlei Details, so dass wir konkrete Aussagen nicht treffen können.
b) Die Grundlagen sind wichtig. Deine Probleme rühren aus meiner Sicht daher, dass Du die Grundlagen, die ihr vorher gehabt haben müsst, nicht verstanden hast. Die LinkedList, die vorgegeben wurde, ist nicht (komplett) verstanden. Diese Grundlage ist aber zwingend notwendig!

Bezüglich der Grundlagen: LinkedList kann man sich sehr gut bildlich vorstellen. Ein Bild, das ich in der Vergangenheit verwendet habe, ist das Bild eines Zuges. Die Züge sind aber leider noch nicht wirklich modern - zum Koppeln dienen einfach Seile. Diese sind an einem Ende sichtbar und werden so am anderen Ende befestigt, dass das andere Ende da keinen Zugriff drauf hat (Sozusagen unterhalb des Waggons.)

LinkedList hat dann eine Referenz auf einen ersten Knoten, genannt "head":
head ist dann die Lok. An der Lok hinten ist ein ein Seil befestigt. Am Seil kann ein Waggon hängen oder auch nicht (null)
Waggon sind dann die Nodes. Die haben also eine Ladung (value, data, wie auch immer). Vorne ist unterhalb des Waggons eine Möglichkeit, etwas zu befestigen. Da kann kein, ein oder sogar mehrere Seile befestigt werden. Das kann man aber vom Waggon aus nicht sehen! Und hintern ist wieder ein Seil. An dem kann ein Waggon hängen oder auch keiner.

Nun kann man sich alle möglichen Dinge vorstellen.
- Prüfen, ob die Liste leer ist. Das wäre ein Zug, an dem keine Waggons hängen. ==> Also bei der Lok schauen, ob da am Sel ein Waggon hängt oder nicht.
- Ein Waggon hinten dran hängen: Ich gehe von der Lok aus so lange immer von Waggon zu Waggon, bis ich ein Seil habe, an dem kein Waggon dran hängt. Da hänge ich dann einen Waggon an.
- Ein Waggon dazwischen hängen: Ist dann auch ganz einfach visuell vorstellbar. Ich löse an der Stelle, wo der Waggon hin soll, das Seil und binde das Seil vom neuen Waggon dort an. Das gelöste Seil binde ich dann an den Waggon, der dazwischen kommen soll.
- ...

Das ist dann bildlich vorstellbar und so auch schnell verständlich. Zur Not könnte man dies sogar mit einer Holzeisenbahn für paar Euro durchspielen.
 

bindankbar

Mitglied
Ich vermute, dass es eine eigens implementierte LinkedList ist, die ihr verwendet und wenn es eine entsprechende Übung zu abstrakten Datentypen geht, dann wäre die Übung an dieser Stelle, dass Du Dir das erst einmal aufmalst: Wie genau sieht die LinkedListe aus, die Du derzeit hat und was genau soll das Resultat sein?

Falls ihr gewisse Funktionen schon habt, dann ist Funktionalität übernehmbar. Das Löschen eines Elements wird vom Prinzip her genau das sein, was DU brauchst, um ein Element aus der Liste heraus zu nehmen. Das Einfügen eines Elements wird genau das machen, was Du brauchst, um ein Element einzufügen.

Daher ist aber halt zwingend notwendig, dass die Klasse LinkedList, die Ihr habt, komplett verstanden wurde. Das ist eine existenzielle Basis und jede Erklärung kann nur dann zielführend sein, wenn diese Basis vorhanden ist.



Da ihr ja vermutlich nur eure eigene LinkedList habt, ist auch das genau der Datentyp, den ihr verwenden sollt / müsst. Es geht ja gerade darum, euer Wissen zu diesem Datentyp zu vertiefen.

Und da ist es dann vermutlich so, dass ihr gewisse Grundlagen schon haben werdet (wie @temi schon sagte): Ihr werdet ja schon LinkedLists angelegt und mit Elementen gefüllt haben. Irgend welche Operationen werdet Ihr schon haben. Und daher bin ich sehr sicher, Du Du prinzipiell schon Code hast, um eine Liste zu erzeugen und da Elemente hinzu zu fügen. (Wie hättest Du sonst im anderen Thread etwas machen können?)

Daher wären zwei Punkte ganz wichtig:
a) Bei Fragen brauchen wir Details. Du lieferst uns keinerlei Details, so dass wir konkrete Aussagen nicht treffen können.
b) Die Grundlagen sind wichtig. Deine Probleme rühren aus meiner Sicht daher, dass Du die Grundlagen, die ihr vorher gehabt haben müsst, nicht verstanden hast. Die LinkedList, die vorgegeben wurde, ist nicht (komplett) verstanden. Diese Grundlage ist aber zwingend notwendig!

Bezüglich der Grundlagen: LinkedList kann man sich sehr gut bildlich vorstellen. Ein Bild, das ich in der Vergangenheit verwendet habe, ist das Bild eines Zuges. Die Züge sind aber leider noch nicht wirklich modern - zum Koppeln dienen einfach Seile. Diese sind an einem Ende sichtbar und werden so am anderen Ende befestigt, dass das andere Ende da keinen Zugriff drauf hat (Sozusagen unterhalb des Waggons.)

LinkedList hat dann eine Referenz auf einen ersten Knoten, genannt "head":
head ist dann die Lok. An der Lok hinten ist ein ein Seil befestigt. Am Seil kann ein Waggon hängen oder auch nicht (null)
Waggon sind dann die Nodes. Die haben also eine Ladung (value, data, wie auch immer). Vorne ist unterhalb des Waggons eine Möglichkeit, etwas zu befestigen. Da kann kein, ein oder sogar mehrere Seile befestigt werden. Das kann man aber vom Waggon aus nicht sehen! Und hintern ist wieder ein Seil. An dem kann ein Waggon hängen oder auch keiner.

Nun kann man sich alle möglichen Dinge vorstellen.
- Prüfen, ob die Liste leer ist. Das wäre ein Zug, an dem keine Waggons hängen. ==> Also bei der Lok schauen, ob da am Sel ein Waggon hängt oder nicht.
- Ein Waggon hinten dran hängen: Ich gehe von der Lok aus so lange immer von Waggon zu Waggon, bis ich ein Seil habe, an dem kein Waggon dran hängt. Da hänge ich dann einen Waggon an.
- Ein Waggon dazwischen hängen: Ist dann auch ganz einfach visuell vorstellbar. Ich löse an der Stelle, wo der Waggon hin soll, das Seil und binde das Seil vom neuen Waggon dort an. Das gelöste Seil binde ich dann an den Waggon, der dazwischen kommen soll.
- ...

Das ist dann bildlich vorstellbar und so auch schnell verständlich. Zur Not könnte man dies sogar mit einer Holzeisenbahn für paar Euro durchspielen.
Ja wir haben eine eine selbst erzeugte linkedlist. Und wir haben auch alle Referenzen etc.

Darf leider keinen Code von der Aufgabe posten, unsere Lehrer meint, man darf sich Hilfe suchen, aber seinen Code will er nicht im Internet sehen, damit er es auch Jahre weiter verwenden kann als Übung.

Sorry ich habe die Frage bisschen falsch formuliert, bin mit den Fachwörtern echt sehr schlecht sorry :(. Also der Datentyp ist der Name der Klasse, in der die linkedlist manuell erstellt wurde, das weiß ich. Aber was gebe ich bei Return an, gebe ich da wieder den Namen der Klasse an, also z. B. return Klassenname;? Weil dann gebe ich ja da einfach einen Datentyp an und sogar den gleichen, wie ich der Methdoe gegeben habe, wo das return ausgeführt wird. Das kanns nciht sein oder?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Wenn Du eine LinkedList mit Elementen zurückgeben sollst, dann musst Du in der Methode eine neue LinkedList erzeugen, da dann die Elemente hinzu fügen und dann am Ende die LinkedList zurück geben.
 

bindankbar

Mitglied
Wenn Du eine LinkedList mit Elementen zurückgeben sollst, dann musst Du in der Methode eine neue LinkedList erzeugen, da dann die Elemente hinzu fügen und dann am Ende die LinkedList zurück geben.
Danke hat funktioniert, aber kann irgendwie nicht markieren, dass das Thema sich erledigt hat, in dem ich dir eine grüne Antwort gebe oder wie das heißt, also das was ich das letzte Mal gemacht habe
 
K

kneitzel

Gast
Das ist ok. Es liegt daran, dass Du letztes Mal eine Frage gestellt hast (--> Darauf gibt es dann Antworten) und hier hast Du eine Diskussion gestartet (--> Keine Antworten).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Verkettete Liste Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
S Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
T Verkettete Liste Java Basics - Anfänger-Themen 14
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
L verkettete Liste - Ausgabeproblem Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
R ArrayList Objekt -> verkettete Liste Java Basics - Anfänger-Themen 4
R verkettete Liste Java Basics - Anfänger-Themen 13
R verkettete Liste in und aus Datei Java Basics - Anfänger-Themen 5
M Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen Java Basics - Anfänger-Themen 2
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
G Dopplelt verkettete liste Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben