diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/iterator')
12 files changed, 36 insertions, 24 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/AbstractFilteredIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/AbstractFilteredIterator.java index 8cb14df3..a56b34db 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/AbstractFilteredIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/AbstractFilteredIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/EmptyIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/EmptyIterator.java index 10fbca1c..98a3539e 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/EmptyIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/EmptyIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIterator.java index 7a8e0c73..d416faa6 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIteratorAdapter.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIteratorAdapter.java index 3976319b..4a8cb512 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIteratorAdapter.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableIteratorAdapter.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableUtil.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableUtil.java index fa748248..8e4afd80 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableUtil.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/IterableUtil.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/MergedIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/MergedIterator.java index 2676a4fb..9208ab14 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/MergedIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/MergedIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -34,15 +34,15 @@ import java.util.Iterator; * * @apiviz.stereotype adapter * @apiviz.uses Iterator oneway - * + * * @param <E> Entry type */ -public class MergedIterator<E> implements Iterator<E> { +public class MergedIterator<E> implements IterableIterator<E> { /** * All the iterators we process */ final Iterator<Iterator<E>> iterators; - + /** * The iterator we are currently processing */ @@ -52,7 +52,7 @@ public class MergedIterator<E> implements Iterator<E> { * The last iterator we returned an object for, for remove() */ Iterator<E> last = null; - + /** * Main constructor. * @@ -83,20 +83,22 @@ public class MergedIterator<E> implements Iterator<E> { @Override public boolean hasNext() { - while((current != null && current.hasNext()) || iterators.hasNext()) { - // Next element in current iterator? - if (current != null && current.hasNext()) { + do { + if(current != null && current.hasNext()) { return true; } + if(!iterators.hasNext()) { + return false; + } // advance master iterator and retry current = iterators.next(); } - return false; + while(true); } @Override public E next() { - while (!current.hasNext()) { + while(!current.hasNext()) { current = iterators.next(); } last = current; @@ -105,9 +107,14 @@ public class MergedIterator<E> implements Iterator<E> { @Override public void remove() { - if (last == null) { + if(last == null) { throw new RuntimeException("Iterator.remove() called without next()"); } last.remove(); } + + @Override + public Iterator<E> iterator() { + return this; + } } diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/OneItemIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/OneItemIterator.java index d67503af..a81dcc18 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/OneItemIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/OneItemIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/ReverseListIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/ReverseListIterator.java index 52cab893..c207e44c 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/ReverseListIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/ReverseListIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/TypeFilterIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/TypeFilterIterator.java index 9bf2ecfc..cd687542 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/TypeFilterIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/TypeFilterIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -33,7 +33,7 @@ import java.util.Iterator; * @param <IN> Input datatype * @param <OUT> Output datatype */ -public class TypeFilterIterator<IN, OUT extends IN> extends AbstractFilteredIterator<IN, OUT> { +public class TypeFilterIterator<IN, OUT extends IN> extends AbstractFilteredIterator<IN, OUT> implements IterableIterator<OUT> { /** * Class restriction */ @@ -83,4 +83,9 @@ public class TypeFilterIterator<IN, OUT extends IN> extends AbstractFilteredIter return null; } } -} + + @Override + public Iterator<OUT> iterator() { + return this; + } +}
\ No newline at end of file diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableIterator.java index 271ba495..03c1119c 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableListIterator.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableListIterator.java index 0123216d..7b9c9d79 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableListIterator.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/UnmodifiableListIterator.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.iterator; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team diff --git a/src/de/lmu/ifi/dbs/elki/utilities/iterator/package-info.java b/src/de/lmu/ifi/dbs/elki/utilities/iterator/package-info.java index 52359156..9a889d1d 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/iterator/package-info.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/iterator/package-info.java @@ -5,7 +5,7 @@ This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures -Copyright (C) 2011 +Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team |