25. november 2003 - 10:25Der er
18 kommentarer og 1 løsning
Gentagne gennemløb af en Iterator
Jeg sidder med en lille liste (ArrayList, supertype List) bestående af nogle objekter, som jeg vil hente fra en ende af igen og igen. Spørgsmålet er, om man kan gøre det med en Iterator ???? I givet fald måske med brug af modulus - men hvordan. Jeg kan sagtens løbe listen igennem igen og igen ved at sætte i=0, når i == list.size() - men hvordan får man det til at fungere med en iterator ????
Det er også min mening - men jeg befinder mig i en gruppe, der er af en anden mening og fordi det er en opgave i at benytte en masse forskellige Patterns, så er det gennemtrumfet, at Iterator skal anvendes. Ulogisk argument - men det er årsagen.
Ja, det er rigtigt - men det skal vi ligeså længe programmet kører, så på et tidspunkt returnerer i.hasNext() false og så skal vi gerne starte forfra i listen igen, igen, igen
Ja, men loopet foregår inde i en tråd, som laver nogle andre ting og skal bruge et nyt objekt fra listen, derfor vil iteratoren nå slut og aldrig kunne starte forfra igen, fordi tråden (TimerTask) lever ligeså længe, som programmet kører. Så spørgsmålet er om man kan lave et eller andet med modulus.... så der hele tiden bliver hentet noget alligevel a la ovenstående eksempel... ???
boolean continue = true; Iterator it = lst.iterator(); while(continue) { if (it.hasNext()) { X x = (X)it.next(); // process x } else { dummyTaskThatYelds(); it = lst.iterator(); } }
boolean continue = true; while(continue) { Iterator it = lst.iterator(); while(it.hasNext()) { X x = (X)it.next(); // process x } dummyTaskThatYelds(); }
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.