JAL-2674 finish with iterators for now
[jalview.git] / src / jalview / analysis / Dna.java
index c3408bd..a6fe541 100644 (file)
@@ -44,6 +44,7 @@ import jalview.util.ShiftList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 
 public class Dna
@@ -60,7 +61,7 @@ public class Dna
 
   private final String[] seqstring;
 
-  private final List<int[]> contigs;
+  private final Iterator<int[]> contigs;
 
   private final char gapChar;
 
@@ -91,7 +92,7 @@ public class Dna
    * @param viewport
    * @param visibleContigs
    */
-  public Dna(AlignViewportI viewport, List<int[]> visibleContigs)
+  public Dna(AlignViewportI viewport, Iterator<int[]> visibleContigs)
   {
     this.selection = Arrays.asList(viewport.getSequenceSelection());
     this.seqstring = viewport.getViewAsString(true);
@@ -396,11 +397,12 @@ public class Dna
     ShiftList vismapping = new ShiftList(); // map from viscontigs to seqstring
     // intervals
     int vc = 0;
-    int[] scontigs = new int[contigs.size() * 2];
+
     int npos = 0;
     int[] lastregion = null;
-    for (int[] region : contigs)
+    while (contigs.hasNext())
     {
+      int[] region = contigs.next();
       if (lastregion == null)
       {
         vismapping.addShift(npos, region[0]);
@@ -411,7 +413,14 @@ public class Dna
         vismapping.addShift(npos, region[0] - lastregion[1] + 1);
       }
       lastregion = region;
+      vc++;
+    }
 
+    int[] scontigs = new int[vc];
+    vc = 0;
+    while (contigs.hasNext())
+    {
+      int[] region = contigs.next();
       scontigs[vc] = region[0];
       scontigs[vc + 1] = region[1];
       vc++;