可以做推送的网站灰色词快速排名方法
web/
2025/10/5 23:32:07/
文章来源:
可以做推送的网站,灰色词快速排名方法,广东的设计公司,合肥制作手机网站stringutils因此#xff0c;我最近写了一篇关于旧的#xff0c;可靠的Apache Commons StringUtils的文章 #xff0c;该文章引起了很多评论#xff0c;其中之一是Google Guava提供了更好的连接和拆分字符串的机制。 我必须承认#xff0c;这是我尚未探索的番石榴的一个角落… stringutils 因此我最近写了一篇关于旧的可靠的Apache Commons StringUtils的文章 该文章引起了很多评论其中之一是Google Guava提供了更好的连接和拆分字符串的机制。 我必须承认这是我尚未探索的番石榴的一个角落。 因此我认为应该仔细研究一下并与StringUtils进行比较我不得不承认我对自己的发现感到惊讶。 肯定有很多不同的方法可以做到这一点吗 Guava和StringUtils确实采取了风格上不同的方法。 让我们从基本用法开始。 // Apache StringUtils...
String[] tokens1 StringUtils.split(one,two,three,,);// Guava splitter...
IterableString tokens2 Splitter.on(,).split(one,two,three); 因此我的第一个观察结果是Splitter更面向对象。 您必须创建一个拆分器对象然后使用该对象进行拆分。 而StringUtils拆分器方法使用更具功能性的样式以及静态方法。 在这里我更喜欢Splitter。 需要一个可重用的拆分器来拆分逗号分隔的列表吗 一个拆分器还可以修剪开头和结尾的空白并忽略空元素 没问题 Splitter niceCommaSplitter Splitter.on(,).omitEmptyString().trimResults();niceCommaSplitter.split(one,, two, three); //one,two,three
niceCommaSplitter.split( four , five ); //four,five 这看起来真的很有用还有其他区别吗 还要注意的另一件事是Splitter返回一个IterableString 而StringUtils.split返回一个String数组。 真的看不出有什么太大的不同大多数时候我只是想依次遍历令牌 在我研究了这两种方法的性能之前我也不认为这没什么大不了的。 为此我尝试运行以下代码 final String numberList One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten;long start System.currentTimeMillis();
for(int i0; i1000000; i) {StringUtils.split(numberList , ,);
}
System.out.println(System.currentTimeMillis() - start);start System.currentTimeMillis();
for(int i0; i1000000; i) {Splitter.on(,).split(numberList );
}
System.out.println(System.currentTimeMillis() - start); 在我的机器上以下时间输出 594 31 番石榴的Splitter快10倍 现在这比我预期的要大得多Splitter比StringUtils快10倍以上。 怎么会这样 好吧我怀疑这与返回类型有关。 Splitter返回一个IterableString 而StringUtils.split为您提供一个字符串数组 因此 Splitter实际上不需要创建新的String对象。 还值得注意的是您可以缓存您的Splitter对象从而可以更快地运行。 番石榴的Splitter每次都赢吗 稍等一下。 这还不是全部。 注意我们实际上对字符串的结果没有做任何事情吗 就像我提到的看起来Splitter实际上并没有创建任何新的Strings。 我怀疑这实际上是将其推迟到它返回的Iterator对象。 那么我们可以测试一下吗 当然可以 以下是一些代码可以反复检查生成的子字符串的长度 final String numberList One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten;
long start System.currentTimeMillis();
for(int i0; i1000000; 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 i0; i1000000; i) {IterableString numbers splitter.split(numberList);for(String number : numbers) {number.length();}}
System.out.println(System.currentTimeMillis() - start); 在我的机器上输出 609 2048 番石榴的Splitter慢了将近4倍 确实我期望它们的速度差不多或者说番石榴速度更快所以这是另一个令人惊讶的结果。 看起来通过返回IterableSplitter可以立即获得收益从而可以长期承受痛苦。 确保性能测试实际上在测试有用的东西在这里也有道理。 总之我想我大多数时候仍会使用Splitter。 在小型列表中性能差异将可以忽略不计并且Splitter感觉使用起来要好得多。 仍然令我感到惊讶的是如果您要拆分很多字符串而性能是一个问题那么考虑切换回Commons StringUtils可能是值得的。 参考 Toms Programming Blog博客上我们JCG合作伙伴 Tom Jefferys的Guava Splitter vs StringUtils 。 翻译自: https://www.javacodegeeks.com/2012/12/guava-splitter-vs-stringutils.htmlstringutils
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87615.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!