Google Guava Splitter 对比 Apache StringUtils
Guava Splitter vs StringUtils
最近写了关于apache commons的StringUtils提供的常用功能介绍,见链接(http://vipcowrie.iteye.com/blog/1513017),但是我们知道google的guava也提供了一些字符串处理的常见功能,所以,我在本文将对两者的字符串分割函数做一次比较详细的对比(结果比较surprise)。
区别
首先看基本的使用方法:
看起来有点用,还有其他区别么?
另外一个需要注意的地方就是Splitter返回的是Iteratable<String>,而StringUtils.split返回的是一个String数组。
大部分使用分隔符的情况是我们需要对字符串按照分隔符进行遍历处理,仅此而已。
下面就是常用的代码性能对比的例子:final String numberList = "One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten"; long strtime=System.currentTimeMillis();numberList.split(",");System.out.println(System.currentTimeMillis()-strtime);strtime=System.currentTimeMillis();StringUtils.split(numberList,",");System.out.println(System.currentTimeMillis()-strtime);strtime=System.currentTimeMillis();Splitter.on(",").split(numberList);System.out.println(System.currentTimeMillis()-strtime); long start = System.currentTimeMillis(); for(int i=0; i<1000000; i++) { StringUtils.split(numberList , ','); } System.out.println(System.currentTimeMillis() - start); start = System.currentTimeMillis(); for(int i=0; i<1000000; i++) { Splitter.on(',').split(numberList ); } System.out.println(System.currentTimeMillis() - start); start = System.currentTimeMillis(); for(int i=0; i<1000000; i++) { numberList.split(","); } System.out.println(System.currentTimeMillis() - start);
结果是:
1
18
29
1143
248
4702
可是我只需要执行一两次就行了