1.区别
- split从JDK 1.4开始提供, StringTokenizer从JDK 1.0开始提供
- split函数用分割符拆分时, 如果是空字符串,就会输出文字串。但StringTokenizer会把空字符串去掉。默认情况下,最后的文字串是空字符串时,两种方法都会去掉空字符串。但是在Split 函数中想要保留空字符串时,可以使用limit 参数。
- 拆分方式:
split 是使用正则表达式来拆分, StringTokenizer是以文字串拆分
split的分隔符是 ^, *,| 等文字串时需要在分隔符前加 "\\"
2.性能
- 下面测试例子的结果
. split : 1121092
. StringTokenizer : 423797
- 性能测试结果(请看附件):
Sun 公司建议使用split 或 其他一些时候用正则表达式的解决方式。但实际测试表明 StringTokenizer 的性能比split 要好。所以可以在不同的开发环境选择不同的方式。
3.测试代码
package client;
import java.util.StringTokenizer;
public class SplitTest {
private static final String DELIM = "|";
private static void useStringTokenizer(String input)
{
StringTokenizer st = new StringTokenizer(input, DELIM);
while (st.hasMoreElements()) {
String token = st.nextElement().toString();
System.out.println("Split = " + token);
}
}
private static void useSplit(String input)
{
String[] splitStr = input.split("\\|", 10);
int splitLength = splitStr.length;
for(int i = 0; i < splitLength; i++) {
System.out.println("Split : " + splitStr[i]);
}
//System.out.println(Arrays.asList(fields));
}
public static void main(String[] args) {
String input = "1|2|3||5|||8||";
long start1 = System.nanoTime();
useStringTokenizer(input);
System.out.println(System.nanoTime() - start1);
long start2 = System.nanoTime();;
useSplit(input);
System.out.println(System.nanoTime() - start2);
}
}
4.测试结果
Split = 1
Split = 2
Split = 3
Split = 5
Split = 8
423797
Split : 1
Split : 2
Split : 3
Split :
Split : 5
Split :
Split :
Split : 8
Split :
Split :
1121092
本文对比了Java中split方法与StringTokenizer类在字符串拆分上的区别及性能表现。split从JDK1.4开始提供,支持正则表达式拆分;而StringTokenizer从JDK1.0开始提供,按指定字符拆分。性能测试显示,在具体应用场景下StringTokenizer表现更优。
435

被折叠的 条评论
为什么被折叠?



