You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by ka...@apache.org on 2008/04/14 09:11:09 UTC

svn commit: r647677 - /lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java

Author: kalle
Date: Mon Apr 14 00:11:04 2008
New Revision: 647677

URL: http://svn.apache.org/viewvc?rev=647677&view=rev
Log:
MAHOUT-26, eternal loop in VectorView#iterator

Modified:
    lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java

Modified: lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java?rev=647677&r1=647676&r2=647677&view=diff
==============================================================================
--- lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java (original)
+++ lucene/mahout/trunk/src/main/java/org/apache/mahout/matrix/VectorView.java Mon Apr 14 00:11:04 2008
@@ -126,23 +126,42 @@
   }
 
   @Override
-  public Iterator<Vector.Element> iterator() { return new ViewIterator(); }
+  public Iterator<Vector.Element> iterator() {
+    return new ViewIterator();
+  }
+
   public class ViewIterator implements Iterator<Vector.Element> {
-    Iterator<Vector.Element> it;
-    Vector.Element el;
+    private Iterator<Vector.Element> it;
+    private  Vector.Element el;
+
     public ViewIterator() {
-      it=vector.iterator();
-      while(it.hasNext())
-      {	el=it.next();
-	if(isInView(el.index())) return;
+      it = vector.iterator();
+      buffer();
+    }
+
+    private void buffer() {
+      while (it.hasNext()) {
+        el = it.next();
+        if (isInView(el.index())) return;
       }
-      el=null;	// No element was found
+      el = null;  // No element was found
+    }
+
+    public Vector.Element next() {
+      Vector.Element buffer = el;
+      buffer();
+      return buffer;
     }
-    public Vector.Element next() { return el; }
-    public boolean hasNext() { return el!=null; }
+
+    public boolean hasNext() {
+      return el != null;
+    }
+
     /** @throws UnsupportedOperationException all the time. method not
      * implemented.
      */
-    public void remove() { throw new UnsupportedOperationException(); }
+    public void remove() {
+      throw new UnsupportedOperationException();
+    }
   }
 }