最近看了一些资料,做了一个有意思的测试。。如下
先做一个测试用的String(制作过程略)
结果如下
org="1;2;3;..........................;10000";(伪代码)
分别使用三种方式分割字符串10000次。
方案1:split
for (int i=0;i<10000;i++){
org.split(";");
}
总计耗时:3600+ms
方案2:StringTokenizer
StringTokenizer st=new StringTokenizer(org,";");
for (int i=0;i<10000;i++){
while(st.hasMoreTokens()){
st.nextToken();
}
st=new StringTokenizer(org,";");
}
总计耗时:2400+ms
方案3:indexof + subString
String temp=org;
for (int i=0;i<10000;i++){
while(true)
String sp=null;
int index=temp.indexOf(';');
if(index==-1){
break;
}
sp=temp.subString(0,index);
temp=temp.subString(index+1);
}
temp=org;
}
总计耗时:500+ms
多的话不说了,应该都懂了。
采用第三种方案分割大字符串的时候,注意内存溢出问题。