Avatar billede louise&patricia Nybegynder
21. maj 2003 - 09:50 Der er 9 kommentarer og
1 løsning

LinkedList i LinkedList

Hejsa,
Vi sidder og laver et projekt, hvor vi skal lave en LinkedList indeni en LinkedList, men hvordan gør vi det?

Vi vil gerne lave en LinkedList der repræsentere en skole, som hedder enSkole, og så vil vi gerne i hvert felt  af den første LinkedList (enSkole) tilføje en ny LinkedList, som hedder enKlasse, som repræsentere de forskellige skoleklasser, for så tilsidst at tilføje hver elev som et objekt i den sidstnævnte LinkedList.

Hvordan gøres dette?

Vi har prøvet lidt frem og tilbage, og har prøvet noget lignende:

LinkedList enSkole = new LinkedList();
LinkedList enKlasse = new LinkedList();

public void tilfojKlasse(Klasse klasse){
  enSkole.add(enKlasse.add(klasse));   
}

Vi er interesseret i hvordan metoden skal opbygges for at få det til at virke...
Avatar billede arne_v Ekspert
21. maj 2003 - 10:00 #1
Man kan tilføje ethvert objekt til en Linkedlist også
en linked list.

LinkedList enSkole = new LinkedList();
LinkedList enKlasse = new LinkedList();
...
enSkole.add(enKlasse);

eller:

LinkedList enSkole = new LinkedList();
...
public void tilfojKlasse(LinkedList enklasse){
  enSkole.add(enKlasse);   
}
Avatar billede louise&patricia Nybegynder
21. maj 2003 - 18:15 #2
Hvordan kan man så udskrive listen... altså den der repræsenterer skolen
Avatar billede arne_v Ekspert
21. maj 2003 - 18:55 #3
Du kan bare skrive den ud:

System.out.println(enSkole);

LinkedList skulle have en toString der virker fornuftigt.
Avatar billede arne_v Ekspert
21. maj 2003 - 18:56 #4
Iøvrigt: en skole indeholder X klasser - hvad indeholder en klasse ?
Avatar billede louise&patricia Nybegynder
21. maj 2003 - 23:00 #5
Listen enKlasse indeholder data om alle eleverne: navn, alder osv.

Men kan ikke rigtig få det til at virke med System.out. Skal man ikke bruge en Iterator til det?
Avatar billede arne_v Ekspert
21. maj 2003 - 23:05 #6
import java.util.LinkedList;

public class LLL {
    public static void main(String[] args) {
        LinkedList ll1 = new LinkedList();
        ll1.add("abc");
        ll1.add("xyz");
        LinkedList ll2 = new LinkedList();
        ll2.add("a1");
        ll2.add("b2");
        LinkedList ll = new LinkedList();
        ll.add(ll1);
        ll.add(ll2);
        System.out.println(ll);
    }
}

skriver f.eks.

[[abc, xyz], [a1, b2]]

ud hvilket er korrekt.

Hvis I skal have en pænere udskrift ud så skal I iterere.
Avatar billede arne_v Ekspert
21. maj 2003 - 23:09 #7
Udbygget eksempel:

import java.util.Iterator;
import java.util.LinkedList;

public class LLL {
    public static void main(String[] args) {
        LinkedList ll1 = new LinkedList();
        ll1.add("abc");
        ll1.add("xyz");
        LinkedList ll2 = new LinkedList();
        ll2.add("a1");
        ll2.add("b2");
        LinkedList ll = new LinkedList();
        ll.add(ll1);
        ll.add(ll2);
        System.out.println(ll);
        Iterator it1 = ll.iterator();
        while(it1.hasNext()) {
            Iterator it2 = ((LinkedList)it1.next()).iterator();
            while(it2.hasNext()) {
                System.out.println((String)it2.next());
            }
        }
    }
}
Avatar billede arne_v Ekspert
21. maj 2003 - 23:10 #8
Nu behøver man ikke bruge iterator på LinkedList, men
det er en mulighed.

Bemærk at det er meget vigtigt at objekterne i inderste LinkedList
har en god toString metode - ellers ser det nemlig ikek så godt ud.
Avatar billede arne_v Ekspert
06. juni 2003 - 23:37 #9
Tid at lukke spørgsmålet ?
Avatar billede arne_v Ekspert
15. juni 2003 - 18:46 #10
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester