`
sungang_1120
  • 浏览: 322413 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

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 splitter = Splitter.on(',').omitEmptyStrings().trimResults();
		
		Iterable<String> tokens3 = splitter.split("one,,two,three");
		Iterator<String> iterator = tokens3.iterator();
		while (iterator.hasNext()) {
			String value = iterator.next();
			System.out.println(value);
}

 

输出结果是:.

one
two
three

 

     这个则比较方便。要注意的是splitter返回的是Iterable<String>,这个和StringUtil
有点不同。


效率方面的对比,作者作了比较:

final String numberList = "One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten";
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
	StringUtils.split(numberList,',');
}
System.out.print("StringUtils split expenditure time : ");
System.out.println(System.currentTimeMillis() - startTime);
		
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
	Splitter.on(',').split(numberList);
}
System.out.print("Splitter split expenditure time : ");
System.out.println(System.currentTimeMillis() - startTime);

 

输出结果:

 

StringUtils split expenditure time : 672
Splitter split expenditure time : 312

 

splitter快上!主要是怀疑因为splitter返回的是Iterable<String>,不用每次new String对象。

 

再来一个测试:

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

 

结果如下:

StringUtils split expenditure time : 735
Splitter split expenditure time : 2062

 

spitter这次更慢了! 所以感觉,如果StringUtil够用的话,其实用StringUtil其实很好的拉。

分享到:
评论

相关推荐

    google Guava集合工具类(超实用)

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    google开源项目guava.jar包

    谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...

    谷歌guava的jar包和源码,值得收藏

    谷歌Guava库是一个广泛使用的Java库,它提供了许多核心库的实用工具类,包括集合、缓存、并发、I/O、字符串处理、泛型 utilities、错误处理、网络、数学运算以及类加载器支持等多个方面。Guava的目标是使Java编程...

    Google的Guava工具包

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    Google Guava 官方教程

    Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于高效地连接和拆分字符串。此外,Strings 类包含了许多静态方法,用于处理常见字符串操作。 6. **I/O 工具** Guava 的 Files 和 CharStreams 模块提供...

    google guava 中文教程

    Guava的IO模块提供了流式处理的读写操作,如CharSource和ByteSource,以及Files工具类,可以简化文件操作。例如,Files.copy()方法可以方便地进行文件复制,Charsets类定义了常见的字符编码。 七、原子类与并发原语...

    Getting Started with Google Guava code

    Google Guava 是一个广泛使用的开源库,为Java开发人员提供了一系列实用工具类和集合框架。这个库旨在简化常见的编程任务,提高代码的可读性和可维护性。Guava 提供了丰富的功能,包括缓存、并发工具、原生类型支持...

    Getting Started with Google Guava.pdf

    Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。Guava的目标是提供一种更加简洁、优雅的方式来处理常见的编程任务,并且在很多情况下...

    Getting Started with Google Guava

    书中还提到了一些重要的知识点,比如Guava库中提供的各种工具类和方法,以及如何在项目中使用Guava的集合框架来处理常见的数据结构问题,例如使用不可变集合、集合工具类和集合的辅助函数等。此外,书中还可能涉及了...

    Util工具类

    1. **Java.lang.StringUtil**:Java内置的字符串工具类,提供诸如字符串空判断、连接、分割、替换等常用功能。 2. **Java.util.DateUtil**:处理日期和时间的工具类,可以进行日期格式化、日期比较、日期计算等操作...

    guavapdf-ch_GoogleGuava官方教程_

    Guava提供了许多字符串处理的辅助方法,如Joiner和Splitter,它们分别用于连接字符串和分割字符串。Strings类包含了一些实用的静态方法,如isNullOrEmpty、commonPrefix等,可以更方便地处理字符串。 **实用方法** ...

    java常用工具类整理

    本文将详细介绍 Spring 及 Guava 相关工具类的使用说明和代码 demo。这些工具类都是 Java 开发中常用的实用工具,可以帮助开发者快速高效地完成各种任务。 一、Spring 工具类 1. org.springframework.util....

    google guava

    Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...

    使用google guava 实现定时缓存功能

    在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...

    http请求工具类HttpClientUtil,get,post请求(csdn)————程序.pdf

    HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...

    google-guava.jar

    谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、并发库、字符串处理、I/O...

    Google-guava 19.0

    Guava的I/O库提供了流式处理的FileReader和FileWriter,以及Files工具类,简化了文件读写操作。PathMatcher允许灵活地匹配文件路径,而ByteStreams和CharStreams则方便了字节流和字符流之间的转换。 **5. 字符串...

    Google Guava

    此外,书籍中提到了Guava库所遵循的一些最佳实践,比如对于不可变集合的使用和如何利用Guava提供的工具类来处理异常等。这些最佳实践的介绍有助于开发者避免在编写Java代码时可能遇到的一些常见问题,提升代码的...

    Google Guava 30.1.1常用类介绍及实践代码

    **Google Guava 30.1.1常用类...Guava 的设计目标是提高代码质量和效率,通过提供这些工具类,开发者可以更加专注于业务逻辑,而不是基础库的实现细节。在实际项目中熟练运用 Guava 可以显著提升开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics