Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:04 Der er 22 kommentarer og
1 løsning

Hente værdier fra ArrayList, som indeholder flere værdier

Uden at være sikker på om spørgsmålet er formuleret rigtigt (er lige startet med Java) vil jeg høre hvordan jeg kan trække værdierne ud af min element i min ArrayList

værdierne er lagt ind sådan her;

ArrayListNavn.add(new Ting(241, 345, "Hovedkvarter"));

Kan I hjælpe, har hurtigt brug for hjælp, derfor 100 point.
Avatar billede Slettet bruger
21. oktober 2004 - 14:11 #1
Ting minTing = (Ting)arrayList.get(i); // Hvor i er indekset på dit objekt, kan evt itereres igennem med en løkke.
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:15 #2
Hvad nu hvis jeg kun vil hive f.eks. "Hovedkvarter" ud? Det var egentlig mere noget i den stil jeg mente med mit spørgsmål (dårligt formuleret ;-))
Avatar billede Slettet bruger
21. oktober 2004 - 14:16 #3
Undskyld, jeg glemte lige at se hvad du havde kaldt din ArrayList.

Ting minTing = (Ting)ArrayListNavn.get(i);

at iterere den igennem kan gøres med en for-løkke:

for (int i=0; i<ArrayListNavn.size(); i++) {
    Ting minTing = (Ting)ArrayListNavn.get(i);
    // Gør noget med dit Ting-objekt her :-)
}
Avatar billede Slettet bruger
21. oktober 2004 - 14:18 #4
ok, så prøver jeg lige igen

for (int i=0; i<ArrayListNavn.size(); i++) {
    Object obj = ArrayListNavn.get(i);

    if (obj instanceof Ting) {
        Ting minTing = (Ting)obj;
        // Gør noget med dit Ting-objekt her
    } else if (obj instanceof HovedKvarter) {
        Hovedkvarter mitHovedkvarter = (Hovedkvarter)obj;
        // Gør noget med dit Hovedkvarter-objekt her
    }
}

Godt nok ?
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:23 #5
Prøver lige igen...

blTing=new ArrayList();
blTing.add(new Ting(1,2,"test"));

så vil jeg gerne ligge "test" over i en String

testnavn= (String) blTing.get(2);

burde testnavn så ikke indeholde strengen "test"...
Avatar billede Slettet bruger
21. oktober 2004 - 14:23 #6
Undskyld, jeg vrøvler....

Du skal bruge den løkke jeg skrev i min kommentar "21/10-2004 14:16:25" og tjekke på den variabel du gemmer hovedkvarter i.
Avatar billede Slettet bruger
21. oktober 2004 - 14:24 #7
Prøv lige at smide klassen Ting, her....
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:26 #8
Det ligger på en comp uden internet, desværre.  Men hvis der kun er et Array som man skal hente noget udfra.
Avatar billede Slettet bruger
21. oktober 2004 - 14:28 #9
Jamen, du har ikke brugt et array, du har brugt en Arraylist som kan bruges til at holde mange objekter i. I denne har du så valgt at oprette et objekt af typen ting, jeg kan ikke guide dig til hvordan du kan få det objekt ud, med mindre du fortæller mig hvilke metoder der er til at tilgå variabel-værdier i objektet.

Hvis der kun er et objekt i din ArrayList vil det ha' index'et 0.
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:30 #10
min fejl, det er ArrayList
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:32 #11
Hvis jeg prøver at hente fra plads 3 (index tal 2), får jeg følgende fejl.

IndexOutOfBoundsException:
Index: 2,Size: 1 (in java.util.ArrayList).
Avatar billede Slettet bruger
21. oktober 2004 - 14:34 #12
Ja, den skriver også at du kun har et element i ArrayListen

"Size: 1"

og tilgår elementet på plads nr 3:

"Index: 3"

Du kan altså kun tilgå elementerne på index-pladserne 0 og 1 (men du har vidst allerede forstået at man starter på index-plads 0 i Java, så det gider jeg ikke at fortælle om).
Avatar billede Slettet bruger
21. oktober 2004 - 14:36 #13
"Index: 2", naturligvis...
Avatar billede Slettet bruger
21. oktober 2004 - 14:37 #14
Du kan bruge metoden size() til at undersøge hvor mange elementer der er i en ArrayList.
Avatar billede martinbk Nybegynder
21. oktober 2004 - 14:38 #15
det du forsøger er at hive en attribut ud af et object som er gemt i en liste,

det kunne evt gøres sådan (men jeg synes det er grim)

String HovedKvarter = ((Ting) ArrayListNavn.get(0)).getHovedKvarter();
Avatar billede Slettet bruger
21. oktober 2004 - 14:40 #16
forudsat hans værdi "Hovedkvarter" er gemt i en variabel, hvilkens værdi kan tilgås med metoden getHovedKvarter(); - det er RET så mange ting at forudsætte.
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 14:41 #17
spørgsmål "21/10-2004 14:23:01"  er der fejl der???
Avatar billede martinbk Nybegynder
21. oktober 2004 - 14:42 #18
corholio jeg er fuldstændig enig, men ud fra den relativ spinkle beskrivelse der er givet kan jeg ikke rigtig give andre bud, men jeg antog lidt at det er gemt et sted, om variablen så er public, eller private med en get metode aner jeg ikke
Avatar billede Slettet bruger
21. oktober 2004 - 14:42 #19
Det spørgsmål omhandler hvordan man itererer sin liste igennem og undersøger / udtrækker forskellige objekttyper fra sin ArrayList...derfor sagde jeg undskyld. :-)
Avatar billede Slettet bruger
21. oktober 2004 - 14:44 #20
@martinbk - fair nok... :-)
Avatar billede martinbk Nybegynder
21. oktober 2004 - 14:44 #21
ja der er fejl i din kode fra "21/10-2004 14:23:01"

endda op til flere:

blTing=new ArrayList();
blTing.add(new Ting(1,2,"test"));

// testnavn er ikke initialiseret samtidig forsøger du at caste et "Ting" object til en String hvilket giver type-mismatch
testnavn= (String) blTing.get(2);
Avatar billede sierradriver Nybegynder
21. oktober 2004 - 20:38 #22
Efter lang tids kamp, er det opgivet og vi har gjort det på en anden måde, tak for forsøgene på at hjælpe.
Avatar billede Slettet bruger
21. oktober 2004 - 22:39 #23
Har du lyst til at fortælle os hvordan i løste problemet, for jeg er rimelig blank?
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