首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

google的guava工具种splitter和apache stringutil对比

2012-12-27 
google的guava工具类splitter和apache stringutil对比一直用的是apache的stringutil工具类,其实google的工

google的guava工具类splitter和apache stringutil对比
  一直用的是apache的stringutil工具类,其实google的工具类项目
guava中居然也有字符串的分隔类splitter的,在
http://code.google.com/p/guava-libraries/中可以下载,其中在老外的
http://www.javacodegeeks.com/2012/12/guava-splitter-vs-stringutils.html
这篇文章中进行了stringutil的对比,下面大概总结翻译之:


   首先看两者的用法:

// Apache StringUtils...
String[] tokens1 = StringUtils.split('one,two,three',',');

// Guava splitter...
Iterable<String> tokens2 = Splitter.on(',').split('one,two,three');

   StringUtils静态类来的,spiltter的语法中则要new对象,但splitter中,一个优点
是,可以去掉多余的空格等,比如:

  Splitter niceCommaSplitter = Splitter.on(',')
                              .omitEmptyString()
                              .trimResults();

  这里去掉多余的空格,调用时,比如
niceCommaSplitter.split('one,, two,  three'); //'one','two','three'
niceCommaSplitter.split('  four  ,  five  '); //'four','five'

   这个则比较方便。要注意的是splitter返回的是Iterable<String>,这个和StringUtil
有点不同。
    效率方面的对比,作者作了比较:

final String numberList = 'One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten';long start = System.currentTimeMillis();  for(int i=0; i<1000000; i++) {  final String[] numbers = StringUtils.split(numberList, ',');    for(String number : numbers) {      number.length();    }  }System.out.println(System.currentTimeMillis() - start);Splitter splitter = Splitter.on(',');start = System.currentTimeMillis();for(int i=0; i<1000000; i++) {  Iterable<String> numbers = splitter.split(numberList);    for(String number : numbers) {      number.length();    }  }System.out.println(System.currentTimeMillis() - start);


  结果反过来:
609
2048
spitter这次更慢了!
   所以感觉,如果StringUtil够用的话,其实用StringUtil其实很好的拉 1 楼 freezingsky 2012-12-10   我觉得,如果楼主能从源码的角度上对二个方法的实现上稍作解释,这文章会显得更加充足些。

热点排行