您的位置:首页 > 其它

字符串分割方式和查找方法比较

2016-04-27 11:42 225 查看
以下简单的介绍字符串分割的三种方式的不同点和速度

public class StringSplit {
public static void main(String[] args) {
String orgStr = null;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 10000; i++) {
sb.append(i);
sb.append(";");
}
orgStr = sb.toString();
StringSplit ss = new StringSplit();
long beginTime = System.currentTimeMillis();

ss.split01(orgStr);
long endTime = System.currentTimeMillis();
System.out.println("方法1用时:"+(endTime -beginTime));
beginTime = System.currentTimeMillis();
ss.split02(orgStr);
endTime = System.currentTimeMillis();
System.out.println("方法2用时:"+(endTime -beginTime));
beginTime = System.currentTimeMillis();
ss.split03(orgStr);
endTime = System.currentTimeMillis();
System.out.println("方法3用时:"+(endTime -beginTime));

}
/**
* 此方法运行时间 花费了3923ms,split()方法使用简单,功能强大,但是,在性能敏感的系统中频繁使用这个方法是不可取的
* @param str
*/
public void split01(String str){
for (int i = 0; i < 10000; i++) {
str.split(";");
}
}
/**
* 此方法运行时间花费了3721ms,即使在这段代码中StringTokenizer对象被不断创建并销毁,但其效率仍然明显高于split方法
* @param str
*/
public void split02(String str){
StringTokenizer st = new StringTokenizer(str,";");
for (int i = 0; i < 10000; i++) {
while(st.hasMoreTokens()){
st.nextToken();
}
st= new StringTokenizer(str,";");
}
}
/**
* 使用indexOf()和subString()的算法仅仅花费了828ms,便 执行完成,其性能远远超过前两种方式,由这个方法可以看出,
* 这种方式最适合作为高频函数使用。
* @param str
*/
public void split03(String str){
String tmp = str;
for (int i = 0; i < 10000; i++) {
while(true){
String splitStr = null ;
int j = tmp.indexOf(";");  //找到分隔符的位置
if(j<0)break;   //没有分隔符的存在
splitStr = tmp.substring(0,j);//找到分隔符,截取子符串
tmp = tmp.substring(j+1);  //剩下需要处理的字符串
}
tmp = str;
}
}
}


运行效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: