除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串;

不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被官方不建议使用了,至于原因,可参考stackoverflow上的一个问答:

http://stackoverflow.com/questions/6983856/why-is-stringtokenizer-deprecated

不过,它从jdk最初的版本一直存活到现在,总归有它存在的意义与价值,虽不建议使用,但了解总归是要了解的;

首先参考Oracle的官方文档:

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

其中一个原因或许就是,单从性能上来说,它的性能要优于String的split吧,不过由于正则表达式的强大,导致StringTokenizer的功能方面相对薄弱了些;

public static void main(String[] args) {
Random random = new Random();
StringBuilder string = new StringBuilder();
for (int i = 0; i < 10000000; i++) {
string.append(" " + random.nextInt(1000));
} long start = System.currentTimeMillis();
testStringTokenizer(string.toString());
long end = System.currentTimeMillis();
System.out.println("testStringTokenizer: " + (end - start) + "ms"); start = System.currentTimeMillis();
testStringSplit(string.toString());
end = System.currentTimeMillis();
System.out.println("testStringSplit: " + (end - start) + "ms"); } public static String testStringTokenizer(String str) {
StringBuilder st = new StringBuilder();
StringTokenizer stringTokenizer = new StringTokenizer(str);
while (stringTokenizer.hasMoreTokens()) {
st.append(stringTokenizer.nextToken());
}
return st.toString();
} public static String testStringSplit(String str) {
StringBuilder st = new StringBuilder();
String[] strs = str.split("\\s");
for (String string2 : strs) {
st.append(string2);
}
return st.toString();
}

对比结果:

testStringTokenizer: 476ms
testStringSplit: 2655ms

从代码层次上来看,的确是StringTokenizer要快些。

参考stackoverflow上的说法,不过具体详情可参考:https://www.cpe.ku.ac.th/~jim/java-io.html

StringTokenizer is not deprecated in fact StringTokenizer is 4X faster than String.split() and in competitive programming it is used by many developers.

参考内容有:

http://blog.csdn.net/songylwq/article/details/9016609

Java StringTokenizer分割字符串的更多相关文章

  1. java 竖线分割字符串的问题

    java 竖线分割字符串的问题 例1: String[] paraStr = "6010;320100;A".split(";"); System.out.pr ...

  2. Java中分割字符串

    java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...

  3. 关于java中分割字符串

    例子:String path = "123.456.789"; 如果要使用“.”将path分割成String[], path.split("//."); or ...

  4. Android--split()分割字符串特殊用法

    split()分割字符串 1.不同环境下的区分 Java:分割字符串不能写成split("$")//$为要分割的字符Android:分割字符串需要加上中括号split(" ...

  5. Java StringTokenizer 类使用方法,字符串分割

    Java StringTokenizer 属于 java.util 包,用于分隔字符串. StringTokenizer 构造方法: StringTokenizer(String str) :构造一个 ...

  6. Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  7. java通过StringToKenizer获取字符串中的单词根据空格分离-简写版

    public class StringToKenizer { public static void main(String[] args) { String strin = "Hello J ...

  8. java通过StringToKenizer获取字符串中的单词根据空格分离-详情版

    public class DaXie { public static void main(String[] args) { String strin = "Hello Java World! ...

  9. js,java,jstl多分隔符分割字符串

    1.js多分隔符 分割字符串 var username = “zhao,li;wang.liu”: var arr = str.split(/;|:|,|,|./);  括号里面可以写多分割符号,中英 ...

随机推荐

  1. poj2586 Y2K Accounting Bug(贪心)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=2586 ------ ...

  2. Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得

    第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...

  3. python瓦登尔湖词频统计

    #瓦登尔湖词频统计: import string path = 'D:/python3/Walden.txt' with open(path,'r',encoding= 'utf-8') as tex ...

  4. 超级钢琴 2010年NOI

    /* 自己yy的奇葩做法居然A了23333 不过空间好像很大 时间好像略慢..... 毕竟不是正解 前缀维护sum值 枚举区间起点 然后终点的坐标可以确定在一个范围 可持久化线段树查询区间第1大 然后 ...

  5. oracle 关于动态执行语句 execute immediate 的用法

    当在开发的应用场景中 数据库处理复杂业务逻辑里用到 SQL 语句拼接    可以用  execute immediate   来执行语 举个例子 insert into tb_temp_public( ...

  6. Word 查找替换,通配符一览表

    Word查找替换详细用法及通配符一览表 使用通配符要查找“?”或者“*”,可输入“\?”和“\*”,\1\2\3依次匹配数对括号内容查找(a)12(b)   替换\2XY\1   结果:bXYa ([ ...

  7. C#—委托分析

    1.简单委托示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; names ...

  8. readonly 与 const

    readonly MSDN定义:readonly 关键字是可以在字段上使用的修饰符.当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数 ...

  9. 记一次npapi插件无窗口(windowless )化下的妙巧思路然后解决问题的超爽体验过程

     1:问题 集成第三方的ocx控件,用来做pdf显示和签名.如果用窗口化插件做,很简单,加载ocx到窗口中,再显示到网页即可.但这样有个缺点.就是这个窗口会浮动在网页元素的上面,导致遮挡住网页元素.比 ...

  10. c#结构体和字节数组的转换、字节数组和stream的转换

    本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/streambytsstruct.html using System; using ...