28. september 2001 - 09:48
Der er
3 kommentarer og
1 løsning
Iterator
Jeg skal lave en klasse der implementere iterator....Som gennemløber de 20 tal....Er der nogen der kan hjælpe...det med tallene kan jeg godt selv med hvordan gennemløber man og hvordan laver man classen
28. september 2001 - 10:34
#2
Jeg har klippet det her ud af en større sammenhæng til dig, dat00c12:
public class MasserAfTal {
private int[] tal = {3,7,9,13};
public java.util.Iterator iterator() {
class StakIterator implements java.util.Iterator {
int current;
public StakIterator() {
current=0;
}
public boolean hasNext() {
return current<4;
}
public Object next() {
Object value=new Integer(tal[current]);
current++;
return value;
}
public void remove() {
throw new java.lang.UnsupportedOperationException();
}
};
return new StakIterator();
}
public static void main(String[] args)
{
MasserAfTal m = new MasserAfTal();
java.util.Iterator i = m.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
28. september 2001 - 11:07
#4
Ok - du vil ikke også have forklaret hvad der foregår ??
Men det får du så alligevel. StakIterator-klassen (det er ikke en stak her,
men som sagt er det klippet ud) implementerer interfacet Iterator.
Det kræver at man lave de tre metoder next(), hasNext() og remove().
Vi gider/kan ikke lave den sidste, så den giver en exception.
StakIterator er så lavet som en lokal klasse til metoden iterator(). Dvs. navnet
StakIterator kan ikke ses udenfor, og der er nogle begrænsninger i hvilke
variabler vi kan bruge i klassen. Men vi kan, og det er så det eneste iterator() gør,
oprette en StakIterator, og aflevere den som en Iterator.
Dette er egentlig en smule for simpelt, for vi burde tage højde for
at det vi aflæser i next() udpeget af current ikke har ændret sig, og ellers give
en exception på det. Det kræver at vi husker hvor mange iteratorer vi har sat
i sving, og i vores set-metoder i klassen MasserAfTal sætter nogle variabler
passende steder, som next() så aflæser, og hvis det så ikke giver mening at fortsætte
så lave den exception. Men det må blive en anden gang.