INF1010 grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon
Tenk på hvordan en for- løkke «går igjennom» alle objektene i en array
Iterator miniterator Object next() Iterator miniterator = new Iterator (beholder) ; while ( miniterator.hasnext() ) { Object o = miniterator.next(); <Gjør noe med objektet>
Iterator<Ska-bar> ska-eiterator Ska-bar next() Ska-bar sk = null; Iterator<Ska-bar> ska-eiterator = beholder.iterator(); while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
int teller pekertilneste Ska-bar next() class LenkeListeIterator implements Iterator<T> { private int teller = 0; private pekertilneste = foran; public { return ( teller < antall ); public T next() { T returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne;
int teller pekertilneste Ska-bar next() public Iterator<T> iterator() { return new LenkeListeIterator(); class LenkeListeIterator implements Iterator<T> { private int teller = 0; private pekertilneste = foran; public { return ( teller < antall ); public T next() { T returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; Husk hvordan vi får tak i iteratorobjektet i testprogrammet: Iterator<Ska-bar> ska-eiterator = beholder.iterator();
public class LenkeListe <T> implements Iterable<T> {... public Iterator<T> iterator() { return new LenkeListeIterator(); T next() int teller pekertilneste private class LenkeListeIterator implements Iterator<T> { int teller = 0; pekertilneste = foran; public { return ( teller < antall ); public void remove() { public T next() { T returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne;... et slikt objekt finnes ikke
int Iterator<Ska-bar> ska-eiterator teller Ska-bar next() pekertilneste Men denne koden i testprogrammet gir oss et slikt objekt som kan iterere over ska;bare objekter public stazc void main (String[] a) { LenkeListe<Ska-bar> beholder = new LenkeListe<Ska-bar>(); Iterator<Ska-bar> ska-eiterator = beholder.iterator(); Ska-bar sk = null; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 0 teller Ska-bar next() pekertilneste public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 1 teller Ska-bar next() pekertilneste public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 2 teller pekertilneste Ska-bar next() public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 3 teller pekertilneste Ska-bar next() public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 4 teller pekertilneste Ska-bar next() public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder foran Iterator<Ska-bar> ska-eiterator int 6 antall int 5 teller pekertilneste Ska-bar next() public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder Iterator<Ska-bar> ska-eiterator int 6 teller pekertilneste Ska-bar next() foran int 6 antall null public Ska-bar next() { Ska-bar returnerdenne = pekertilneste.obj; teller++ ; pekertilneste = pekertilneste.neste; return returnerdenne; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println("De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-());
LenkeListe<Ska-bar> beholder = new LenkeListe<Ska-bar>(); Iterator<Ska-bar> ska-eiterator = beholder.iterator(); Ska-bar sk = null; while ( ska-eiterator.hasnext() ) { sk = ska-eiterator.next(); System.out.println( "De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + sk.ska-() ); for (Ska-bar s: beholder) { System.out.println( "De-e er et ska-ebelagt objekt [" + s + "] med ska- NOK " + s.ska-() );
LenkeListe<Ska-bar> beholder = new LenkeListe<Ska-bar>(); Iterator<Ska-bar> ska-eiterator = beholder.iterator(); while ( ska-eiterator.hasnext() ) { System.out.println( "De-e er et ska-ebelagt objekt [" + sk + "] med ska- NOK " + ska-eiterator.next().ska-() ); // akkurat den samme itereringen: for (Ska-bar s: beholder) { System.out.println( "De-e er et ska-ebelagt objekt [" + s + "] med ska- NOK " + s.ska-() );
class TestProg { public stazc void main (String[] argumenter) { LenkeListe<String> beholder = new LenkeListe<String>(); for (String s: argumenter) { beholder.se-innforan(s); beholder.skrivutinfoomalleobjekteneilista(); for (String s : beholder) { System.out.println("- - - - > " + s);
public class LenkeListe <T> { private foran; private int antall; private class { (T t) { obj = t; neste; T obj; public void skrivutinfoomalleobjekteneilista() { n = foran; for (int i = antall; i>0; i- - ) { n.skrivutinfoomobjektetin(); n = n.neste; void skrivutinfoomobjektetin() { System.out.println(obj);.... public void skrivutinfoomalleobjekteneilista() {...
public class LenkeListe <T> { private foran; private int antall; private class { (T t) { obj = t; neste; T obj; public void skrivutinfoomalleobjekteneilista() { n = foran; for (int i = antall; i>0; i- - ) { n.skrivutinfoomobjektetin(); n = n.neste; void skrivutinfoomobjektetin() { System.out.println(obj);.... public void skrivutinfoomalleobjekteneilista() {...
void skrivutdennenogresten() { System.out.println("skrivUtDennenOgResten kalt i node nr " + nodenr); skrivutinfoomobjektetin(); if (neste!= null) neste.skrivutdennenogresten(); System.out.println("skrivUtDennenOgResten i node nr " + nodenr + " avslu-er"); void skrivutrestentilslu-dennen() { System.out.println("skrivUtRestenTilSlu-Dennen kalt i node nr " + nodenr); if (neste!= null) neste.skrivutrestentilslu-dennen(); skrivutinfoomobjektetin(); System.out.println("skrivUtRestenTilSlu-Dennen i node nr " + nodenr + " avslu-er");
neste neste neste neste null metode() metode() metode() metode() neste.metode(); neste.metode(); neste.metode(); neste.metode(); foran void metode() { <gjør det som skal gjøres i noden>; if ( neste!= null ) { neste.metode(); <her kan det også gjøres noe i noden> Se;er i gang «kall- løkka» void offentligmetode() { if ( foran!= null ) foran.metode() ;