Kann man den Inhalt im LinkedList durch aufruf in einem JTextfield suchen ?

Code46

Erfahrenes Mitglied
Hi Leute ,

ich brauche wieder mal eure hilfe.

Undzwar muss ich ein Projekt machen so ähnlich wie die deutschbahn wo ich mein Abfahrtstation und die Zielstation eingeben kann. Als Endprodukt soll denn in einem Textarea die Abfahrtstation + auch die zwischen Station anzeigen + Zielstation + die Reisedauer angezeigt werden.

So meine frage ist jetzt, kann man in einem Linkedlist durch eingabe in einem Textfield die bestimmten station suchen und in einem Textarea anzeigen lassen. Und außerdem will ich auch noch die Zeit berechnen lassen. z.B. will gebe ich in dem Textfield Hamburg ein und will nach Frankfurt. In dem Textarea soll er mir anzeigen welche die kürzeste route ist und wie lange die reise dauren soll.

Hier meine LinkedList

Code:
package linklist;

import java.util.*;


public class SLinkedList {

    protected StringNode head;
    public  SLinkedList() {
        head = new StringNode();
    }

    public static void main(String[] args) {
  
	  SLinkedList greenline = new SLinkedList();
          greenline.addFirst("Hamburg",500);
          greenline.addMid("Berlin",300,"Hamburg");
          greenline.addMid("Stuttgard",600,"Berlin");
          greenline.addMid("Köln",200,"Stuttgard");
          greenline.addMid("Düsseldorf",100,"Köln");
          greenline.addMid("Kiel",700,"Düsseldorf");
          greenline.addMid("München",900,"Kiel");
          greenline.addMid("Potsdam",550,"München");
          greenline.addLast("Dortmund");
          printList(greenline);

           SLinkedList yellowline= new SLinkedList();
          yellowline.addFirst("Hannove",230);
          yellowline.addMid("Bielefeld",150,"Hannove");
          yellowline.addMid("Frankfurt",250,"Bielefeld");
          yellowline.addMid("Bremen",350,"Frankfurt");
          yellowline.addMid("Magdeburg",460,"Bremen");
          yellowline.addLast("Nürnberg");
          printList(yellowline);


    }

    //add a new node to the head of the list
    private void addFirst(String element,int distance) {
        // make variable head point to new node
        head = new StringNode(element,distance,head);
    }

    private void addLast(String element) {
        StringNode tail;
        tail = head;
        while (tail.getNext() != null) {
            tail = tail.getNext();
            }
        //insert new node at end of list
        tail.setNext( new StringNode(element));
    }

    //add a new node after position of curnode
    private void addMid(String element,int distance ,String entryafter) {
        StringNode curnode;
        curnode = head;
        //go to last node and remember previous node at all times
        while (curnode != null && curnode.getElement() != entryafter) {
            curnode = curnode.getNext();
            }
        //if first occurrence of element entryafter was located then insert new node
        if (curnode != null) {
            StringNode newnode = new StringNode(element,distance,curnode.getNext());
            curnode.setNext(newnode);
            }
    }

    private boolean isEmpty() {
        return  head == null;
    }

    private void removeFirst() {
        StringNode oldhead;
        oldhead = head;
        //remove first node from linked list
        if (head != null) {
           head = head.getNext();
           oldhead.setNext(null);
           }
        else {
           throw new NoSuchElementException();
           }
    }

    private void removeLast() {
        StringNode temp, previous;
        temp = head;
        previous = temp;
        //go to last node and remember previous node at all times
        while (temp != null && temp.getNext() != null) {
            previous = temp;
            temp = temp.getNext();
            }
        if (previous != null) {
           //remove last node
           previous.setNext(null);
           }
        else {
           throw new NoSuchElementException();
           }
    }

    //very similar to removeLast except we are looking for element i
    private void removeMid(String element) {
        StringNode temp, previous;
        temp = head.getNext();
        previous = null;
        //go to node containing element and rermember previous node at all times
        while (temp.getElement() != element && temp.getNext() != null) {
            previous = temp;
            temp = temp.getNext();
            }
        if (previous != null && temp.getNext() != null) {
           //not first or last node so we can remove node defined by temp.
           // set the previous node to that after temp
           previous.setNext(temp.getNext());
           temp.setNext(null);
        }
        else {
           throw new NoSuchElementException();
           }
    }
    public static void printList(SLinkedList thelist) {
        StringNode temp;
        if(thelist.isEmpty())
            System.out.println("List is empty");
        else {
            temp = thelist.head;
            while (temp != null) {
               System.out.println(temp.getElement()+" "+temp.getDistance());
               temp = temp.getNext();
            }
            System.out.println();
        }
    }

}
 
Code:
for (int i = 0; i < STRINGARRAY.length; i++) {
  if (textarea.getText.equals(STRINGARRAY[i]) {
//    do code vllt könnte man auch matches() nehmen, wenn es auch bei einem teil gesucht werden sol
//    und das solltest du, bei einer live-aktualisierung in einen keylistener packen
//    du weißt ja wie lange man von wo braucht und wo lang man fährt von a nach b. so kannst ud die 
//    zeit berechnen.
  }
}
 
Ich habe jetzt nicht verstanden was du mit StringArray meinst. Dies ist doch eine LinkedList****
Und wie soll ich die Zeit berechnen.Ok ich weis wo ich lang fahre und wie lange ich brauche aber ich weis nicht wie ich das berechnen lasse
 
mit stringarray meinte ich eben ein stringarray in dem alle suchbegriffe stehen
und wie du die strecke berechnest, naja es wird ja nur bestimmte wege geben.
z.b. wer von hannover nach münchen fährt fährt immer über bestimmte orte, also solltest du steckenobjete erstellen, aus diesen solltest du dann überprüfen können wos lang geht. ein streckenobjet sollte eine methode enthaeltStationen(START, ENDE) (start und ende sind die user eingaben), so könntest du es überprüfen
 
Was bringt es denn wenn ich es alles in eine Array speicher ?Dann brauch ich die LinkedList ja garnicht
 
ganz ehrlich, ich habe die linkedlist noch nie benutzt, aber was ist denn so toll daran? du wirst deine strecken wahrscheinlich eh aus einer datenbank auslesen, da sich bei solchen projeten strecken ja dauernd ändern können. also, welchen vorteil bringt die linkedlist?
 
ja naja wenn du es wohl unbeding mit einer linkedlist machen musst, dann lies es aus der linked list aus anstatt aus einem String[]
 
Ja ich habe aber 3 linkedList ? Soll ich die denn einzelnt aufrufen.
Code:
for (int i = 0; i < SLinkedList.length; i++) {
  if (textarea.getText.equals(SLinkedList[i]) {
 
Code:
for (int i = 0; i < linkedlistArray.length; i++) {
  for (int i2 = 0; i2 < linkedlistArray[i2]; i2++) {
    if (textarea.getText.equals(linkedlistArray[i2][i]) {
      //code
    }
  }
}
forschleifenverkettung gehört eig zu den grundkenntnissen, du solltest das eine oder andere nochmal nachlesen...
 
Zurück