Java LinkedList remove Methode

Diskutiere Java LinkedList remove Methode im Java Basics - Anfänger-Themen Bereich.
G

Gansa

Gute Nacht,
ich möchte eine Remove Methode für meine doppelt verkettete Liste schreiben. Meine Methode remove nimmt Object o als Argument. Ich habe dann das Objekt o zu einem Node gecastet also: Node knoten = (Node) o; Und jetzt hätte ich eigentlich nur noch eine Versrtändnis frage, womit ich gerade total auf dem Schlauch stehe. Ich muss ja sozusagen bis zur stelle des übergebenen Objekts iterieren um dort die Referenzen umzustellen. Sollte ich da mit dem Iterator nach nextNode nochmals .getContent Methode aufrufen um sozusagen die Daten innerhalb der Node zu vergleichen ? Aber das würde keinen Sinn ergeben, weil ich auch Duplikate in der Liste haben könnte, dann auch nicht klar ist, welche Index Postion man meint? Also im großen und ganzen: Wie kann ich zu meinem übergeben Objekt voran iterieren?
Danke im Voraus!
Java:
  public boolean remove(Object o) {

        Node ciaoNode = (Node) o;
        Node iterationNode = head;

        while (iterationNode.getNextNode().getContent() != ciaoNode.getContent()) {
            iterationNode = iterationNode.getNextNode();
        }
 
T

TM69

Also ersteinmal, warum übergibst du ein Objekt und nicht Node?

zum anderen verfügt die Klasse LinkedList über 2 Methoden, die dieses für dich erledigen.

Code:
int indexOf(Object o),
womit du die Stelle ermitteln kannst

Code:
ListIterator<E> listIterator(int index)
mit der du an die durch index angegebene Stelle springst. Bzw. um es genauer zu sagen, die einen Iterator zurückgibt, der an durch index angegeben Stelle anfängt


verstehe ich da richtig?

 
G

Gansa

Also ersteinmal, warum übergibst du ein Objekt und nicht Node?

zum anderen verfügt die Klasse LinkedList über 2 Methoden, die dieses für dich erledigen.

Code:
int indexOf(Object o),
womit du die stelle ermitteln kannst

Code:
ListIterator<E> listIterator(int index)
mit der du an die durch index angegebene Stelle springt


verstehe ich da richtig?

Also ich habe es jetzt hinbekommen eigentlich. Ich kann nur noch den head nicht löschen also das erste Element, so sieht die Methode jetzt aus:
Java:
    public boolean remove(Object o) {
        Node node = head;

        if (node.getContent() == o) {

         node.getNextNode().setPreviousNode(null);
         Node aktuell = node;
            return true;
        }
        while (node.getNextNode() != null) {
            node = node.getNextNode();
            if (node.getContent() == o) {

                node.getPreviousNode().setNextNode(node.getNextNode());
                if (node.getNextNode() != null) {
                    node.getNextNode().setPreviousNode(node.getPreviousNode());
                }

                return true;
            }

        }
        return false;
    }
Es geht darum es selbst auszuimplementieren. Hättest du eine Idee wieso das entfernen des heads nicht funktioniert?
 
T

TM69

Warum benutzt du zum entfernen des ersten Elements in der Liste nicht
Code:
E removeFirst()
?
 
MoxxiManagarm

MoxxiManagarm

Thema: 

Java LinkedList remove Methode

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben