Avatar billede trp79 Nybegynder
14. august 2003 - 09:42 Der er 7 kommentarer og
1 løsning

Iterator vs "almen" forløkke

Hejsa,
bare lige et lille spørgsmål her. Hvad er mest effektiv og mest rigtig af de understående eks?

1)

Iterator iter;
for(iter = arraylist.Iterator(); iter.next();){
  ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}

2)
for(int i=0; i<arraylist.size();i++){
ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}

Jeg ved godt at det måske ikke lige er det der er meningen med brugen af iterator, og det er vel også 1) som er mindst effektiv da iter skal initialiseres... eller?

mvh
Torben
Avatar billede arne_v Ekspert
14. august 2003 - 09:54 #1
Ingen vil jeg sige.

Iterator iter;
while(iter.hasNext()) {
  ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}

må være den korrekte brug af iterator.
Avatar billede arne_v Ekspert
14. august 2003 - 09:55 #2
Iterator iter = arraylist.iterator();
while(iter.hasNext()) {
  ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}
Avatar billede trp79 Nybegynder
14. august 2003 - 10:02 #3
okey, så kan man jo ligeså godt bare holde sig til en 2) hvis man blot skal gennemløbe dataene i "et hug".

Tak for svaret, mvh
Torben
Avatar billede arne_v Ekspert
14. august 2003 - 10:22 #4
Jeg synes at #2 bruger en uheldig tæt kobling mellem arraylist og
iterator.
Avatar billede trp79 Nybegynder
14. august 2003 - 10:24 #5
hov det havde jeg ikke set, det var en fejl!
Der skulle have stået:
2)
for(int i=0; i<arraylist.size();i++){
ObjektInstans oI= (ObjektInstans);
  //do something...
}

var lige lidt for hurtig med copy/paste der fra 1)

Men det ændre vel ikke på dit svar...?
Avatar billede arne_v Ekspert
14. august 2003 - 10:50 #6
Iterator iter = arraylist.iterator();
while(iter.hasNext()) {
  ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}

er fint.

for(int i=0; i<arraylist.size();i++){
  ObjektInstans oI= (ObjektInstans)arraylist.get(i);
  //do something...
}

er fint.

Fordi der blander man ikke arraylist og iterator.
Avatar billede arne_v Ekspert
14. august 2003 - 10:51 #7
for(Iterator iter = arraylist.Iterator(); iter.hasNext();){
  ObjektInstans oI= (ObjektInstans) iter.next();
  //do something...
}

kan også bruges selvom jeg selv bruger konstruktionen.
Avatar billede trp79 Nybegynder
14. august 2003 - 11:05 #8
Det lyder godt, tak for hjælpen.
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