Software Engineering

Filteriterator-Implementierung

 aufwärts

Der Filter­iterator ist nach dem Bridge-Entwurfs­muster gebildet. Er benötigt ein Behavior, das den Basis­iterator und die Filter­funktion angibt. Ein solches konkretes Behavior wird von der abstrakten Klasse FilterIteratorBehavior abgeleitet; diese enthält auch gleich die Factory-Methode iterator, um den so gebildeten Filter­iterator zu erzeugen.

Abstrakte Klasse FilterIteratorBehavior

Ein Behavior, das einen Filter­iterator erzeugt, wird von der abstrakten Klasse FilterIteratorBehavior abgeleitet. So ist sicher­gestellt, dass ein Basis­iterator und eine Filter­funktion vorhanden sind; außerdem steht die Factory-Methode iterator zur Verfügung.

public abstract class FilterIteratorBehavior
{
    /** the base iterator
     */
    public abstract Iterator baseIterator();

    /** the filter function
     */
    public abstract boolean pass(Object o);

    /** factory method that creates the filter iterator
     */
    public Iterator iterator()
    {
        return new FilterIterator(this);
    }

}

Klasse FilterIterator

Eine gewisse Schwierig­keit bei der Implementierung eines Filter­iterators entsteht dadurch, dass immer erst gesucht werden muss, ob noch ein Element vorhanden ist, das der Filter­bedingung genügt. Dies wird mit der Methode tryGetNext durchgeführt.

public class FilterIterator implements Iterator
{
    private FilterIteratorBehavior f;
    private Iterator it;
    private Object x;

    public FilterIterator(FilterIteratorBehavior f_)
    {
        f=f_;
        it=f.baseIterator();
        x=tryGetNext();
    }

    public boolean hasNext()
    {
        return x!=null;
    }

    public Object next()
    {
        Object y=x;
        x=tryGetNext();
        return y;
    }

    /** finds the next object that passes the filter
     */
    private Object tryGetNext()
    {
        Object y;
        while (it.hasNext())
        {
            y=it.next();
            if (f.pass(y))
                return y;
        }
        return null;
    }

    public void remove()
    {
        // not implemented
    }

}

 

Die Klassen FilterIterator und FilterIteratorBehavior finden sich auch im Java-Archiv de.fh-flensburg.inf.lang.iterators-untyped.jar.

 

Weiter mit:   [Anwendung eines Filteriterators]  [Filteriterator mit Typ-Parametern]  oder   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©   Created: 05.03.2012   Updated: 02.03.2017
Valid HTML 4.01 Transitional

Hochschule Flensburg
Campus Flensburg

Informatik in Flensburg studieren...

 

Neu gestaltetes Studienangebot:

Bachelor-Studiengang
Angewandte Informatik

mit Schwerpunkten auf den Themen Software, Web, Mobile, Security und Usability.

Ihr Abschluss
nach 7 Semestern:
Bachelor of Science

 

Ebenfalls ganz neu:

Master-Studiengang
Angewandte Informatik

Ein projektorientiertes Studium auf höchstem Niveau mit den Schwerpunkten Internet-Sicherheit, Mobile Computing und Human-Computer Interaction.

Ihr Abschluss
nach 3 Semestern:
Master of Science

 

Weitere Informatik-Studienangebote an der Hochschule Flensburg:

Medieninformatik

Wirtschaftsinformatik