package elte.java2_utikalauz5.osztaly.inner; import java.util.Iterator; import java.util.NoSuchElementException; /** Lokális változók zárványozódása. @link.forrásfájl {@docRoot}/../data/osztaly/inner/src Lista6.java @since Java Útikalauz programozóknak 1.1 */ public class Lista6 { private Elem elso; private static class Elem { Object adat; Elem elozo, kovetkezo; Elem (Object adat, Elem elozo, Elem kovetkezo) { this.adat = adat; this.elozo = elozo; this.kovetkezo = kovetkezo; } } public void beszur (Object adat) { elso = new Elem(adat,null,elso); if (elso.kovetkezo != null) elso.kovetkezo.elozo = elso; } public void torol (Object adat) { Elem elem = keres(adat); if (elem != null) torol(elem); } private void torol (Elem elem) { if (elem == elso) elso = elem.kovetkezo; if (elem.elozo != null) elem.elozo.kovetkezo = elem.kovetkezo; if (elem.kovetkezo != null) elem.kovetkezo.elozo = elem.elozo; } private Elem keres (Object adat) { for (Elem elem = elso; elem != null; elem = elem.kovetkezo) if (elem.adat.equals(adat)) return elem; return null; } public Iterator felsorol () { class Felsorolo implements Iterator { Elem aktualis = elso; Elem torolheto = null; public boolean hasNext () { return aktualis != null; } public Object next () throws NoSuchElementException { if (aktualis != null) { torolheto = aktualis; Object adat = aktualis.adat; aktualis = aktualis.kovetkezo; return adat; } else { throw new NoSuchElementException(); } } public void remove () throws IllegalStateException { if (torolheto != null) { torol(torolheto); torolheto = null; } else { throw new IllegalStateException(); } } }; return new Felsorolo(); } public void mindre (Muvelet muvelet) { for (Elem elem = elso; elem != null; elem = elem.kovetkezo) muvelet.vegrehajt(elem.adat); } static int multiplicitas (Lista6 lista, final Object minta) { class Szamlalo implements Muvelet { int n = 0; public void vegrehajt (Object adat) { if (adat.equals(minta)) n++; } } Szamlalo szamlalo = new Szamlalo(); lista.mindre(szamlalo); return szamlalo.n; } }