Iterator? (dat.a)

greenspun.com : LUSENET : RUC - Dat.A, E2000 : One Thread

Hej Jakob

Jeg har ikke forstået hvad en iterator er og kan, kan du forklare det skrifteligt?

Mvh Thomas

-- Thomas Calli (Calli@quizak.dk), November 16, 2000

Answers

Hej Thomas

Overordnet set er en iterator blot en 'ting', som kan bruges til at løbe en eller anden samling af elementer igennem. En samling af elementer kan fx. være en liste, et array eller et træ, men i princippet er vi ligeglade. For at kunne gennemløbe elementerne i en samling har vi brug for 2 funktioner: a) vi skal kunne få at vide om der er flere elementer tilbage i samlingen. b) vi skal kunne få fat i det næste element.

Iterator-interfacet indeholder netop disse 2 metoder. hasNext()- metoden returnerer true, hvis vi endnu ikke har nået sidste element og next()-metoden returnerer det næste element (som et Object) og går videre til næste element. En liste kan så implementere vores iterator- interface på een måde, mens et træ ville implementere det på en anden måde. De 2 iteratorer har dog præcis samme interface - nemlig metoderne hasNext() og next().

Udtrykt i pseudokode kan en iterators virkemåde beskrives således:

Iterator i = lav en iterator; while (i.hasNext()==false) //sålænge der er flere elementer Object o = i.next(); //udtag næste element gør noget med o. //gør noget med elementet

Et konkret eksempel fra Java er, når vi løber en vector igennem:

Vector v = new Vector(); //lav vectoren v.add("Hej"); //indsæt et objekt (en string) v.add("med"); v.add("dig");

//vi ønsker nu at løbe elementerne igenne og udskrive dem

Iterator i = v.iterator(); //hent et iterator-objekt ud af vectoren og lad i pege på det.

while (i.hasNext() == false) { Object o = i.next(); //udtag næste element fra vectoren System.out.println(o); //udskriv elementet }

At 'iterere' betyder at gentage en eller flere operationer et antal gange. Man siger ofte at det at udvikle et program er en iterativ proces. Det betyder at vi bevæger os i ring, fx således:

while (programmet er ikke færdigt) { analyser kundens behov design løsninger på kundens behov implementer disse i et program test programmet ret evt. fejl }

Vi laver således analyse, programmering test og fejlretning et (stort) antal gange inden vores program endelig er færdigt.

Håber det blev lidt klarere af denne forklaring.

Ses!

Jakob

-- jakob bendsen (jakob@bendsen.net), November 16, 2000.


Moderation questions? read the FAQ