使用StringTokenizer比使用Spring.split()提高接近一倍的性能。
要是用indexOf来逐步查找,性能还能进一步提高25%左右。很显然,越接近底层的方法性能越得到满足。
不过,这个只是在于对性能要求高的需求底下才有真正的意义。普通应用,String.split()足以
补充一点:
使用String.indexOf()去扫描的时候,如果使用ArrayList或者Vector(两者性能基本上没多大区别)也不是最优方案
还有可以提高更好的性能的方法,就是先扫描有多少个分割符,用String[] 来存贮,比使用Vector要提高一倍左右的性能
如果还需要更进一步,那么就需要使用好的扫描算法了。
String.split方法很常用,用于切割字符串,split传入的参数是正则表达式,它的内部是每次都comiple正则表达式,再调用Pattern.split方法:
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
public String[] split(String regex) {
return split(regex, 0);
}
因此,如果你调用String.split非常频繁的话,每次都重新编译正则表达式的代价很高,性能会受到很大影响,此时最好自己预编译Pattern,再调用Pattern.split方法为妙。
String []items=line.split(" ");
//替代为
static Pattern pattern=Pattern.compile(" ");
String []items=pattern.split(line,0);