Avatar billede bumle90 Nybegynder
14. november 2001 - 22:30 Der er 6 kommentarer og
1 løsning

collection

Hej.....jeg sidder lige og er i gang med at lære at bruge collections.....Jeg bruger en ListArray...men altså en Vector kunne jeg jo i princippet også ligesågodt bruge. Det er sådanset lidt ligemeget. For mit spørgsmål er hvordan jeg får objekterne ud af min collection igen efter jeg har puttet dem derind. Der findes jo metoden get() som returnerer et objekt. Men hvordan får jeg så lige fat i attributterne på dette objekt...Har hørt noget om at mand skal bruge en Iterator eller sådan noget....men hvis der var en der villle være så rar at forklare...så ville jeg blive glad
Avatar billede disky Nybegynder
14. november 2001 - 23:28 #1

Prøv dette her:

importer java.util.*;


ArrayList alist=new ArrayList();
alist.put(\"Hej\");
alist.put(\"Med\");
alist.put(\"Dig\");
Iterator iter=alist.iterator();
while(iter.hasNext())
{
String text=(String)iter.next();
System.out.println(text);
}
Avatar billede disky Nybegynder
14. november 2001 - 23:38 #2
ups:Jeg er for træt lige nu, det skal være:

ArrayList alist=new ArrayList();
alist.add(\"Hej\");
alist.add(\"Med\");
alist.add(\"Dig\");
Iterator iter=alist.iterator();
while(iter.hasNext())
{
String text=(String)iter.next();
System.out.println(text);
}

Avatar billede kristianp Nybegynder
15. november 2001 - 11:57 #3
Eller:

ArrayList alist=new ArrayList();
alist.add(\"Hej\");
alist.add(\"Med\");
alist.add(\"Dig\");

for (int i=0; i<alist.size(); i++) {
  System.out.println((String)alist.get(i));
}

Og der er stor forskel på en Vector og en ArrayList. En Vector er sunkroniseret og det er en ArrayList ikke, så skal men ikke bruge synkronisering skal man bruge en ArrayList, det vil være meget hurtigere.
Avatar billede bumle90 Nybegynder
15. november 2001 - 21:23 #4
Ja at få fat på e string eller en int kan jeg godt. Men hvad hvis jeg har lagt et abstract object derind, og jeg gerne vil have fat i metoderne og attributterne på dette når det ligger inde i min collection. Hvordan gør jeg det?
Avatar billede kristianp Nybegynder
15. november 2001 - 23:42 #5
Når du siger abstract hvad mener du så...
Man kan ikke lave instanser af absracte objekter så hvidt jeg ved...
Avatar billede bumle90 Nybegynder
15. november 2001 - 23:53 #6
nej ok....det var heller ikke det jeg mente :)
Mente bare abstrakt i den forstand at der var flere forskellige varibaler og metoder på denne. Altså fx. i modsætning til en int som jo er ret simpel. Selve klassen objektet oprettes fra skal ikke erklæres abstrakt eller noget....bare et objekt med flere variabler. Hvordan får jeg fat i dette objekt inde fra min collection?
Avatar billede kristianp Nybegynder
16. november 2001 - 00:08 #7
Når du har lagt en instans af en klasse i en collection er den gemt som en instans af klassen Object, som alle klasser jo arver fra.
Når så vil have et object ud fra en collection igen bliver du nødt til at omdanne ( caste ) det fra Object til den klasse den var før.
Dette kaldes casting.
eks:

Vector v = new Vector();
MyClass myClass1 = new MyClass();
v.add(myclass1);

myClass er nu gemt som typen Object i vectoren.

MyClass myClass2 = v.elementAt(0);
Dette ville ikke virke da man forsøger at tildele en reference af typen MyClass til en instans af typen Object.
Man skal lige caste typen Object til typen MyClass.
MyClass myClass2 = (MyClass)v.elementAt(0);
sådan, nu virker det.
nu kan du kalde variabler og metoder på objektet med referencen myClass2.
Der er specielle regler for hvordan man kan caste, f.eks kan man kun caste op ad i class herakiet. Men det er en helt anden historie....



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