From 4d74c658d90e168f5bcbb90e6c8f89f93196d41f Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Mon, 20 Dec 2004 15:18:57 +0000
Subject: [PATCH] optimise and format

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@2144 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 uk/ac/sanger/artemis/util/StringVector.java | 262 +++++++++++---------
 1 file changed, 147 insertions(+), 115 deletions(-)

diff --git a/uk/ac/sanger/artemis/util/StringVector.java b/uk/ac/sanger/artemis/util/StringVector.java
index 05777638c..7a34c637a 100644
--- a/uk/ac/sanger/artemis/util/StringVector.java
+++ b/uk/ac/sanger/artemis/util/StringVector.java
@@ -20,13 +20,13 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/util/StringVector.java,v 1.1 2004-06-09 09:53:11 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/util/StringVector.java,v 1.2 2004-12-20 15:18:57 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.util;
 
 import java.util.Vector;
-import java.util.StringTokenizer;
+//import java.util.StringTokenizer;
 import java.util.Collections;
 import java.util.Collection;
 import java.util.Comparator;
@@ -35,105 +35,118 @@ import java.util.Comparator;
  *  This class implements a Vector of String objects.
  *
  *  @author Kim Rutherford
- *  @version $Id: StringVector.java,v 1.1 2004-06-09 09:53:11 tjc Exp $
+ *  @version $Id: StringVector.java,v 1.2 2004-12-20 15:18:57 tjc Exp $
  **/
 
-public class StringVector {
+public class StringVector 
+{
+  /**  Storage for String objects. */
+  private Vector vector;
+
   /**
    *  Create a new vector of String objects.
    **/
-  public StringVector () {
-    vector = new Vector ();
+  public StringVector()
+  {
+    vector = new Vector(2);
   }
 
   /**
    *  Create a new vector which contains the given Strings.
    **/
-  public StringVector (final String [] new_strings) {
-    vector = new Vector ();
-    for (int i = 0 ; i < new_strings.length ; ++i) {
-      add (new_strings[i]);
-    }
+  public StringVector(final String[] new_strings) 
+  {
+    int len = new_strings.length;
+    vector = new Vector(len);
+    for(int i = 0; i < len; ++i) 
+      add(new_strings[i]);
   }
 
   /**
    *  Create a new vector which contains the given Strings.
    **/
-  public StringVector (final StringVector new_strings) {
-    vector = new Vector ();
-    for (int i = 0 ; i < new_strings.size () ; ++i) {
-      add (new_strings.elementAt (i));
-    }
+  public StringVector(final StringVector new_strings) 
+  {
+    int len = new_strings.size();
+    vector = new Vector(len);
+    for(int i = 0; i < len; ++i) 
+      add(new_strings.elementAt (i));
   }
 
   /**
    *  Create a new vector which contains only the given String.
    **/
-  public StringVector (final String new_string) {
-    vector = new Vector ();
-    add (new_string);
+  public StringVector(final String new_string) 
+  {
+    vector = new Vector();
+    add(new_string);
   }
 
   /**
-   *  Performs the same function as Vector.addElement ()
+   *  Performs the same function as Vector.addElement()
    **/
-  public void add (final String node) {
-    vector.addElement (node);
+  public void add(final String node) 
+  {
+    vector.addElement(node);
   }
 
   /**
-   *  Call add () on each of the String objects in the given StringVector.
+   *  Call add() on each of the String objects in the given StringVector.
    **/
-  public void add (final StringVector new_strings) {
-    for (int i = 0 ; i < new_strings.size () ; ++i) {
-      add (new_strings.elementAt (i));
-    }
+  public void add(final StringVector new_strings) 
+  {
+    for (int i = 0; i < new_strings.size(); ++i)
+      add (new_strings.elementAt(i));
   }
 
   /**
-   *  Performs the same function as Vector.removeElement ()
+   *  Performs the same function as Vector.removeElement()
    **/
-  public boolean remove (final String node) {
-    return vector.removeElement (node);
+  public boolean remove(final String node) 
+  {
+    return vector.removeElement(node);
   }
 
   /**
    *  Return the elements of the Vector as an String array.
    **/
-  public String [] getArray () {
-    final String [] return_array = new String [size ()];
-
-    vector.copyInto (return_array);
-    
+  public String[] getArray() 
+  {
+    final String[] return_array = new String[size()];
+    vector.copyInto(return_array);
     return return_array;
   }
 
   /**
    *  Return the elements of the Vector as Collection.
    **/
-  public Collection asCollection () {
-    return (Collection) vector.clone ();
+  public Collection asCollection() 
+  {
+    return (Collection)vector.clone();
   }
 
   /**
-   *  Performs the same function as Vector.elementAt ()
+   *  Performs the same function as Vector.elementAt()
    **/
-  public String elementAt (final int index) {
-    return (String) vector.elementAt (index);
+  public String elementAt(final int index) 
+  {
+    return (String)vector.elementAt(index);
   }
 
   /**
    *  Performs the same function as Vector.setElementAt ()
    **/
-  public void setElementAt (final String string, final int index) {
-    vector.setElementAt (string, index);
+  public void setElementAt(final String string, final int index) 
+  {
+    vector.setElementAt(string, index);
   }
 
   /**
    *  Performs the same function as Vector.size ()
    **/
-  public int size () {
-    return vector.size ();
+  public int size()
+  {
+    return vector.size();
   }
 
   /**
@@ -142,72 +155,62 @@ public class StringVector {
    *  @return the index of the first occurrence of the argument in this
    *    vector; returns -1 if the object is not found.
    **/
-  public int indexOf (final String string) {
-    return vector.indexOf (string);
+  public int indexOf(final String string) 
+  {
+    return vector.indexOf(string);
   }
 
   /**
    *  Return true if this object contains the given String, testing for
    *  equality using the equals method.
    **/
-  public boolean contains (final String string) {
-    if (indexOf (string) == -1) {
+  public boolean contains(final String string) 
+  {
+    if(indexOf(string) == -1)
       return false;
-    } else {
+    else
       return true;
-    }
   }
 
   /**
    *  Sorts the elements of the vector using quicksort from the collections
    *  package.
    */
-  public void sort () {
-    final Comparator comparator =
-      new Comparator () {
-        public int compare (Object fst, Object snd) {
-          if (fst == null) {
-            if (snd == null) {
-              return 0;
-            } else {
-              return -1;
-            }
-          } else {
-            if (snd == null) {
-              return 1;
-            } 
-          }
-          return ((String) fst).compareTo ((String) snd);
+  public void sort()
+  {
+    final Comparator comparator = new Comparator()
+    {
+      public int compare(Object fst, Object snd) 
+      {
+        if(fst == null) 
+        {
+          if(snd == null)
+            return 0;
+          else
+            return -1;
+        } 
+        else 
+        {
+          if(snd == null)
+            return 1;
         }
-      };
+        return ((String)fst).compareTo((String) snd);
+      }
+    };
 
-    Collections.sort (vector, comparator);
+    Collections.sort(vector, comparator);
   }
 
   /**
    *  Return a new copy of this object.
    **/
-  public StringVector copy () {
-    final StringVector new_string_vector = new StringVector ();
-
-    new_string_vector.vector = (Vector) vector.clone ();
-
+  public StringVector copy() 
+  {
+    final StringVector new_string_vector = new StringVector(this);
+//  new_string_vector.vector = (Vector)vector.clone();
     return new_string_vector;
   }
 
-  /**
-   *  Return a copy of this vector with all the Strings turned to lower case.
-   **/
-  public StringVector toLowerCase () {
-    final StringVector return_vector = new StringVector ();
-
-    for (int i = 0; i < size (); ++i) {
-      return_vector.add (elementAt (i).toLowerCase ());
-    }
-
-    return return_vector;
-  }
-
   /**
    *  Return a StringVector containing the values of the given String after
    *  splitting using the given characters.  If the argument String is zero
@@ -219,33 +222,49 @@ public class StringVector {
    *    false then the split_characters will be treated as a block (and "foo"
    *    would be returned in the example.
    **/
-  public static StringVector getStrings (final String argument,
-                                         final String split_characters,
-                                         final boolean keep_zero_char_tokens) {
-    final StringVector return_vector = new StringVector ();
-
-    final StringTokenizer tokeniser =
-      new StringTokenizer (argument, split_characters, true);
-
+  public static StringVector getStrings(final String argument,
+                                        String split_characters,
+                                        final boolean keep_zero_char_tokens) 
+  {
+    final StringVector return_vector = new StringVector();
     String last_value = null;
 
-    while (tokeniser.hasMoreTokens ()) {
-      final String value = tokeniser.nextToken ();
+    int ind1 = 0;
+    int ind2;
+    int argLen  = argument.length();
+    String value;
+
+    while(ind1 < argLen)
+    {
+      ind2 = argument.indexOf(split_characters,ind1);
+      if(ind2 == ind1)
+      {
+        ind1++;
+        continue;
+      }
+
+      if(ind2 < 0)
+        ind2 = argLen;
+ 
+      value = argument.substring(ind1,ind2);
+      ind1 = ind2+1;
 
-      if (value.length () == 1 &&
-          split_characters.indexOf (value.charAt (0)) != -1) {
+      if(value.length() == 1 &&
+         split_characters.indexOf(value.charAt(0)) != -1) 
+      {
         // ignore the split characters
 
-        if (keep_zero_char_tokens &&
-            (last_value == null ||
-             last_value != null && last_value.length () == 1 &&
-             split_characters.indexOf (last_value) != -1)) {
+        if(keep_zero_char_tokens &&
+           (last_value == null ||
+            last_value != null && last_value.length () == 1 &&
+            split_characters.indexOf (last_value) != -1)) 
+        {
           // we need to add a space because of two split_characters in a row
-          return_vector.add ("");
+          return_vector.add("");
         }
-      } else {
-        return_vector.add (value);
-      }
+      } 
+      else
+        return_vector.add(value);
 
       last_value = value;
     }
@@ -259,9 +278,10 @@ public class StringVector {
    *  length or it consists only of the characters used to split, the return
    *  vector will be zero length.
    **/
-  public static StringVector getStrings (final String argument,
-                                         final String split_characters) {
-    return getStrings (argument, split_characters, false);
+  public static StringVector getStrings(final String argument,
+                                        final String split_characters) 
+  {
+    return getStrings(argument, split_characters, false);
   }
 
   /**
@@ -271,12 +291,24 @@ public class StringVector {
    *  String is zero length or it consists only of whitespace, the return
    *  vector will be zero length.
    **/
-  public static StringVector getStrings (final String argument) {
-    return getStrings (argument, " \t", false);
+  public static StringVector getStrings(final String argument) 
+  {
+    return getStrings(argument, " ", false);
+  }
+
+  public static void main(String args[])
+  {
+    String argument = "a c g t c g c a t c g a c t c";
+    long startTime = System.currentTimeMillis();
+
+    for(int i=0; i<10000000; i++)
+    {
+      getStrings(argument, " ", true);
+    }
+
+    long endTime = System.currentTimeMillis();
+
+    System.out.println("TIME TAKEN "+  Long.toString(endTime-startTime));
   }
 
-  /**
-   *  Storage for String objects.
-   **/
-  private Vector vector;
 }
-- 
GitLab