String类的split()方法与StringTokenizer方法
来源:互联网 发布:java和javascript 区别 编辑:程序博客网 时间:2024/05/22 13:29
关于split和StringTokenizer我们分别来看两个例子:
StringTokenizer:
String str = "111,222,333,444,555,666,777"; StringTokenizer commaToken = new StringTokenizer(str, ","); while (commaToken.hasMoreTokens()) { System.out.println(commaToken.nextToken()); }
split:
String str = "111,222,333,444,555,666,777"; String[] num = str.split(","); for (int i = 0; i < num.length; i++) { System.out.println(num[i]); }
两个例子的打印信息都如下所示:
111222333444555666777
关于split和StringTokenizer的性能问题,网络资料和实际用数据测试的结果都是 StringTokenizer的性能要优于split。
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 = 1Split = 2Split = 3Split = 5Split = 8423797Split : 1Split : 2Split : 3Split : Split : 5Split : Split : Split : 8Split : Split : 1121092
0 0
- String类的split()方法与StringTokenizer方法
- StringTokenizer类与String.split()的区别
- String类的split()方法与StringTokenizer方法对字符串分割并输出内容的性能比较
- Java中一个比String类的split方法好用的分隔字符串类StringTokenizer
- String类的split方法
- String 的split()方法
- String的split()方法
- String的split方法
- String的split方法
- String的split方法与正则表达式
- String类split方法
- String类split方法
- split与StringTokenizer的理解
- 关于String类的split方法
- 关于String类的split方法解析
- String类的split方法详解
- Java String类的split方法使用
- Java中String类的split方法
- Linux内核体系结构--1
- Android Gems — Java源码分析之HashMap和SparseArray
- 字符串组做过滤条件的使用方法
- 同余.v11582乌龟
- android 6.0 USB添加调制解调模式
- String类的split()方法与StringTokenizer方法
- Android Studio jcenter 自动集成极光推送
- 【BFS】一道经典的迷宫模板问题
- 文章标题
- 检查更新和下载的自定义弹出框
- WebScoket 规范
- 设置document.domain实现js跨域注意点
- 解决hierarchy of the type is inconsistent错误
- nfs的部署