JAL-1569 preserve input ordering for stockholm files (Hashtable implementation change...
authorJim Procter <jprocter@dundee.ac.uk>
Sun, 23 Nov 2014 16:29:58 +0000 (16:29 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Sun, 23 Nov 2014 16:29:58 +0000 (16:29 +0000)
src/jalview/io/StockholmFile.java

index 7ca07c8..c546930 100644 (file)
@@ -40,7 +40,9 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -185,7 +187,7 @@ public class StockholmFile extends AlignFile
     String version;
     // String id;
     Hashtable seqAnn = new Hashtable(); // Sequence related annotations
-    Hashtable seqs = new Hashtable();
+    LinkedHashMap<String, String> seqs = new LinkedHashMap<String, String>();
     Regex p, r, rend, s, x;
     // Temporary line for processing RNA annotation
     // String RNAannot = "";
@@ -257,12 +259,11 @@ public class StockholmFile extends AlignFile
           }
         }
         // logger.debug("Number of sequences: " + this.noSeqs);
-        Enumeration accs = seqs.keys();
-        while (accs.hasMoreElements())
+        for (Map.Entry<String, String> skey : seqs.entrySet())
         {
-          String acc = (String) accs.nextElement();
           // logger.debug("Processing sequence " + acc);
-          String seq = (String) seqs.remove(acc);
+          String acc = skey.getKey();
+          String seq = skey.getValue();
           if (maxLength < seq.length())
           {
             maxLength = seq.length();