Eine Liste kopieren

S

Sandro95

Aktives 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 !
 
BestGoalkeeper

BestGoalkeeper

Top Contributor
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;
        }

    }
 
S

Sandro95

Aktives 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;
            
        
            
            
        }

        
        
    }
 
kneitzel

kneitzel

Top Contributor
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 ...
 
S

Sandro95

Aktives Mitglied
In der Klausur ist das nicht der Fall dort hat sie nur eine methode verketten .. sonst wäre es ja auch viel einfacher.. komme leiderf nicht weiter @kneitzel
 
BestGoalkeeper

BestGoalkeeper

Top Contributor
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. :(
 
kneitzel

kneitzel

Top Contributor
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....)
 
kneitzel

kneitzel

Top Contributor
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.
 
BestGoalkeeper

BestGoalkeeper

Top Contributor
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
 
kneitzel

kneitzel

Top Contributor
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.
 
S

Sandro95

Aktives Mitglied
@kneitzel wie ich listen iteriere, verkette ist mir bewusst , nur wie ich genau diese Aufgabe richtig löse halt nicht .
Ich soll die elemente der liste2 in der liste1 kopieren , ohne die liste2 zu verändern darum geht es .
@BestGoalkeeper
 
kneitzel

kneitzel

Top Contributor
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
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
Tino1993 for-Schleife, die eine vorgegebene Anzahl von Zeichen ausgibt Java Basics - Anfänger-Themen 3
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
P Eine komplizierte Sache Java Basics - Anfänger-Themen 1
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
T Wie eine Komposition garantieren Java Basics - Anfänger-Themen 5
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
L Muss eine HttpURLConnection geschlossen werden? Java Basics - Anfänger-Themen 2
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
O Ziehen im Array um einen Schritt in eine einzige beliebige Richtung Java Basics - Anfänger-Themen 5
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
P Alles eine Typfrage Java Basics - Anfänger-Themen 7
B Eine ganze Zahl zerlegen. Java Basics - Anfänger-Themen 4
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
V Wie wiederhole ich eine for-Schleife beim erreichen eines Wertes Java Basics - Anfänger-Themen 9
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
L Klassen Wie “installiert” man eine Klasse? Java Basics - Anfänger-Themen 2
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
X Wo steht, ob eine Datei big, little oder bi-endian codiert ist? Java Basics - Anfänger-Themen 3
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
A Eine Krone in der Textausgabe - Mein Code Java Basics - Anfänger-Themen 11
scratchy1 Kann man in einer Methode eine andere aufrufen? Java Basics - Anfänger-Themen 2
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
H Eine befühlte Klasse weiter geben an Controller Java Basics - Anfänger-Themen 12
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
O Bedingter Operator eine Frage! Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Anzeige

Neue Themen


Oben