Newer
Older
/* StringVector.java
*
* created: Fri Jan 1 1999
*
* This file is part of Artemis
*
* Copyright (C) 1998,1999,2000 Genome Research Limited
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* 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.5 2005-10-13 12:06:12 tjc Exp $
*/
package uk.ac.sanger.artemis.util;
import java.util.Vector;
import java.util.Collections;
import java.util.Comparator;
/**
* This class implements a Vector of String objects.
*
* @author Kim Rutherford
}
/**
* Create a new vector which contains the given Strings.
**/
public StringVector(final String[] new_strings)
for(int i = 0; i < len; ++i)
public StringVector(final String new_string)
{
super();
add(new_string);
}
/**
* Create a new vector which contains the given Strings.
**/
public StringVector(final StringVector new_strings)
* 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));
}
/**
* Sorts the elements of the vector using quicksort from the collections
* package.
*/
public int compare(String fst, String snd)
public StringVector copy()
}
/**
* Return a StringVector containing the values of the given String after
* splitting using the given characters. If the argument String is zero
* length or it consists only of the characters used to split, the return
* vector will be zero length.
* @param keep_zero_char_toks If true then zero width tokens will be
* returned. eg. when splitting on tabs if this parameter is true then
* splitting this "\t\tfoo" will return "" and "foo". If this flag is
* false then the split_characters will be treated as a block (and "foo"
* would be returned in the example.
**/
final boolean keep_zero_char_toks)
String tok;
String lastTok = null;
int idx1 = 0;
int idx2;
final int argLen = argument.length();
delim.indexOf(tok.charAt(0)) != -1)
if(keep_zero_char_toks &&
(lastTok == null ||
lastTok != null && lastTok.length () == 1 &&
delim.indexOf (lastTok) != -1))
// add a space because of two split_characters in a row
strVector.add("");
}
/**
* Return a StringVector containing the values of the given String after
* splitting using the given characters. If the argument String is zero
* length or it consists only of the characters used to split, the return
* vector will be zero length.
**/
final String split_characters)
}
/**
* Return a StringVector containing the values of the given String after
* splitting on whitespace. The return object contains one String for each
* sequence of non-whitespace characters in the argument. If the argument
* 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, " ", false);
}
public static void main(String args[])
{
String argument = "a a g g g c 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);
System.out.println("TIME TAKEN "+ Long.toString(System.currentTimeMillis()-startTime));
startTime = System.currentTimeMillis();
for(int i=0; i<10000000; i++)
{
java.util.StringTokenizer st = new java.util.StringTokenizer(argument, " ", true);
while(st.hasMoreTokens())
st.nextToken();
}
System.out.println("TIME TAKEN "+ Long.toString(System.currentTimeMillis()-startTime));