Eine Liste kopieren

Sandro95

Bekanntes Mitglied
Hey Leute ,

in einer Altklausur habe ich folgende zwei Aufgaben( die verketten von zwei Listen Aufgabe isz kein problem)

1. soll ich eine liste an einer andereren verketten

2. soll ich die Kopien alelr Elemente von liste2 am ende der liste1 anhängen.

könnte man die Aufgabe wie folgt lösen ?




Java:
public void verk(Liste neu) {
        
        if(this.anfang==null) {
            
            this.anfang=neu.anfang;
        }
        else {
            this.ende.nächster=neu.anfang;
            this.ende= neu.ende;
            
        }
    }
    
    public void anhängenKopie(Liste liste2) {
        
        Link a = this.anfang;
        
        while(a!=null) {
            
            this.verk(liste2);
            
            a=a.nächster;
        }
        
        
        
    }


Ich wäre euch mega dankbar wie jegliche Art von hilfe !
 
B

BestGoalkeeper

Gast
Spontan so... das muss aber nicht richtig sein:
Java:
    public void verk(Liste neu) {

        if (this.anfang == null) {
            this.anfang = neu.anfang;
        } else {
            this.ende.nächster = neu.anfang;
        }
        this.ende = neu.ende;

    }

    public void anhängenKopie(Liste liste2) {

        Link a = this.ende;
        Link b = liste2.anfang;
        while (b != null) {
            a.nächster = b;
            b = b.nächster;
        }

    }
 

Sandro95

Bekanntes Mitglied
@BestGoalkeeper glaube meine lösung und deine sind beide falsch.. sehe gerade wir verketten lediglich aber erstellen keine kopien...

dachte jetzt an sowas , aber hier kopiert er mir nur das letzte element der ersten liste..

Java:
public void anhängenKopie(Liste liste2) {
        
        Link a = this.anfang;
        
        while(a!=null) {
            
            Link neu= new Link(a.wert,null);
            liste2.add(neu);
            
            this.ende.nächster=neu;
            
            System.out.print(a.wert + " ");
            a=a.nächster;
            
        
            
            
        }

        
        
    }
 
K

kneitzel

Gast
Hat die Liste nicht schon Methoden, um
- am Ende was anzufügen
- durch die Liste zu iterieren?

Wenn dem so wäre, dann würde ich einfach die vorhandenen Methoden nutzen und halt durch die anzuhängende Liste iterieren (was einem die Werte nach und nach gibt) und dann die Werte einfügen (Was dann die neuen Nodes erzeugt).

Das dürfte einfacher zu lesen und hat auch weniger doppelten Code. Sonst hast du ja ständig die gleichen Dinge, wie z.B,. durch die Liste iterieren und so ...
 
B

BestGoalkeeper

Gast
Hat die Liste nicht schon Methoden, um
- am Ende was anzufügen
- durch die Liste zu iterieren?
Er hat doch anfang und ende, das Durchlaufen bräuchte er nur zusammen mit dem Erstellen neuer Knoten - und dafür muss es einen Konstruktor oder Ähnliches geben - und dabei hilft dann eine Methode, iterieren, wahrs nicht. :(
 
K

kneitzel

Gast
Als erstes musst Du Dir genau überlegen, welche Liste du an welche anfügen willst. Üblich ist, dass die Elemente der übergebenen Liste an die Liste angehängt werden, auf der die Methode aufgerufen wurde.

Und wenn die Methoden nicht vorhanden sind, dann macht es dennoch Sinn, das eben schnell zu implementieren, denn das vereinfacht es doch auch für Dich!

Also brauchst Du sowas wie addAtEnd(wert) als Methode.
Sonderfälle, die Du beachten musst:
a) Liste Leer -> dann kommt die Referenz des neuen Nodes in Anfang.
b) Liste nicht leer -> dann kommt die Referenz nach ende -> naechster.
Und am Ende wird ende = neuer Node.

Dann das Iterieren - das kann man sogar universell machen - also z.B. eine Methode forEach(Consumer<T>) - aber das ist optional.

Iterieren durch eine Liste hast Du ja schon gemacht:

Java:
current = anfang;
while (current != null) {
  // Do somethings (e.g. consumer.accept(current.getValue()))
  current = current.naechster
}

Wenn Du es ohne Consumer machst, dann wäre das natürlich ein addToEnd(current) Aufruf.

Natürlich willst Du die übergebene Liste iterieren - d.h. wenn Du es mit Consumer machst, dann rufst Du liste2.forEach(n -> addToEnd(n)); auf.
Ohne Consumer wird es natürlich ein:
Java:
current = liste2.anfang;
while (current != null) {
  addToEnd(current.getValue());
  current = current.naechster;
}

Also ganz wichtig: Divide and conquer! Teile es in Teilaufgaben auf. Diese sind dann auch deutlich einfacher zu testen, sind übersichtlicher und Code ist deutlich einfacher zu lesen! Das mit dem Consumer ist einfach und gut zu lesen, so man das kennt und beherrscht. Ansonsten wäre halt das Iterator Interface "old school", aber das geht dann wirklich über die Klausur hinaus und ist keine geeignete Lösung für die Klausur.

Aber in der KLausur wären aus meiner Sicht mind. 2 Methoden angebracht: addToEnd und addAll (Oder wie man die immer nennen möchte. add ist eigentlich immer am Ende einfügen, aber man kann da gerne unterscheiden....)
 
K

kneitzel

Gast
Er hat doch anfang und ende, das Durchlaufen bräuchte er nur zusammen mit dem Erstellen neuer Knoten - und dafür muss es einen Konstruktor oder Ähnliches geben - und dabei hilft dann eine Methode, iterieren, wahrs nicht. :(
Wir sind doch bei dem Fall, dass er die Liste nicht anhängen will sondern alle Werte einfügen will.
--> Also muss er die Liste mit den einzufügenden Werten durchgehen und dabei
--> Jeden Wert einfügen.
 
B

BestGoalkeeper

Gast
Wir sind doch bei dem Fall, dass er die Liste nicht anhängen will sondern alle Werte einfügen will.
--> Also muss er die Liste mit den einzufügenden Werten durchgehen und dabei
--> Jeden Wert einfügen.
Ups, ich habe das falsch verstanden, ich dachte, eine neue Kopie der Liste sollte angehängt werden... Du meinst aber Überschreiben
 
K

kneitzel

Gast
fast die gleichen Methoden soll er doch in der Klausur implementieren ;)
Nein, nicht ganz. Seine Aufgabe ist:
2. soll ich die Kopien alelr Elemente von liste2 am ende der liste1 anhängen.
Das ist erst einmal eine Aufgabe, die genau eine Methode (das addAll) benötigt. Und ist ja auch klar: Genau die Methode muss es geben, denn es wird explizit danach gefragt.

Und mein Tipp ist, auch in der Klausur dies sinnvoll aufzuteilen. Mit etwas Glück kann man eine Methode mehrfach verwenden (hier nicht der Fall) aber auch ohne das, ist es nur unwesentlich etwas mehr Schreibarbeit die einem deutlich mehr Überblick verschafft.

Ups, ich habe das falsch verstanden, ich dachte, eine neue Kopie der Liste sollte angehängt werden... Du meinst aber Überschreiben
Ja, das war die erste Aufgabe. Da ging es nur um da Anhängen. Den Teil hatte er auch erfolgreich absolviert.
 
K

kneitzel

Gast
Genau das habe ich doch beschrieben. Ich habe auf zwei Arten den (pseudo) Code gezeigt, wie es gehen würde ... einmal mit Lambda und co und einmal traditional....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
J Hinzufügen eines Objekts in eine Liste, um später dann nochmal auf das Objekt zugreifen zu können Java Basics - Anfänger-Themen 8
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
A Objekte in eine Liste einfügen Java Basics - Anfänger-Themen 7
B Durch eine Liste von Strings laufen Java Basics - Anfänger-Themen 6
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
L Kapselung Benutzerinterface für eine Liste Java Basics - Anfänger-Themen 3
M Klasse fuer eine 5er Liste? Java Basics - Anfänger-Themen 5
HoloYoitsu Array´s in eine art Liste abspeichern? Java Basics - Anfänger-Themen 6
O Klassen in eine Liste speichern? Java Basics - Anfänger-Themen 6
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
A aus einer Liste eine Teilliste generiren Java Basics - Anfänger-Themen 6
D In eine Liste ein und auslesen Java Basics - Anfänger-Themen 2
S Von einer Klasse auf eine Liste einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
S Drag and Drop von .txt Dateien in eine Liste Java Basics - Anfänger-Themen 2
D Insertion sort auf eine liste Java Basics - Anfänger-Themen 4
K Einfügen in eine Liste Java Basics - Anfänger-Themen 4
D Eine Liste wie ne HashTable, nur mit auslesbaren Key . . . Java Basics - Anfänger-Themen 31
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
T Anfänger Problem eine Liste in ein XML-File zu schreiben Java Basics - Anfänger-Themen 3
H Wie erstelle ich eine Liste? Java Basics - Anfänger-Themen 4
G Properties und eine Liste in einem entry key. Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
J eine einfache liste Java Basics - Anfänger-Themen 17
B Iterieren über eine Liste Java Basics - Anfänger-Themen 2
C eine Liste dynamisch erzeugen ? Java Basics - Anfänger-Themen 6
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben