`
bastengao
  • 浏览: 149175 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

guava 实用操作集合

    博客分类:
  • java
阅读更多
guava是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。
  
   大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。

   只说不练不行啊,让我们举上一两个例子
判断 String不为null,且不为空
String str=...;
//use java
if(str !=null && !str.isEmpty()){
    //do something
}


//use guava
if(!Strings.isNullOrEmpty(str)){
    //do something
}

上而的例子还不是很给力,让我们举一个更给力的例子。复制文件
File from=...;
File to=...;

//use java
FileInputStream in=new FileInputStream(from);
FileOutputStream out=new FileOutputStream(to);
byte[] buff=new byte[1024];
int readLength=-1;
while((readLength = in.read(buff)) > 0){
    out.write(buff, 0, readLength);
}
in.close();
out.close();

//use guava
Files.copy(from,to); //注意,只用了一行代码噢


    通过上面的例子,已经能感觉到guava的强大。接下来,让我们更深入看看guava的其他功能。guava(r09-api)分为这几个包
  • base              基本的工具类与接口
  • io                 io流相关的工具类与方法
  • net               网络地址相关的工具类与方法
  • primitives        原始类型的工具类
  • collect           通用集合接口与实现,与其集合相关工具类
  • util.concurrent 并发相关工具类


base

字符串相关工具类
Strings
public class StringsTest {
    @Test
    public void test() {
        //将空字符串转换为null
        Assert.assertEquals(null, Strings.emptyToNull(""));
        //将null转换为空字符串
        Assert.assertEquals("", Strings.nullToEmpty(null));
        //判断字符串为null或者为空
        Assert.assertTrue(Strings.isNullOrEmpty("") && Strings.isNullOrEmpty(null));
        //将字符串重复
        Assert.assertEquals("javajavajava", Strings.repeat("java", 3));
    }
}


CharMatcher
public class CharMatcherTest {
    @Test
    public void test() {
        String source = "a1b2c3";
        CharMatcher matcher = CharMatcher.DIGIT; //预定义的 DIGIT 类型
        Assert.assertTrue(mathcer.match('8'));
        Assert.assertEquals("123", matcher.retainFrom(source));
        Assert.assertEquals(3, matcher.countIn(source));
        Assert.assertEquals("abc", matcher.removeFrom(source));
        Assert.assertEquals("a2b3c", matcher.trimFrom("1a2b3c4"));
    }
}

Jioner
public class JoinerTest {
    @Test
    public void test() {
        Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011", "08", "04"));
    }
}


Splitter
public class SplitterTest {
    @Test
    public void test() {
        Splitter.on(',').split("a,b"); //结果返回Iterable<String>,包含 "a" and "b"
        //将结果中的元素trim
        //结果依然包含  "a" 和 "b" ,而不是 "a " 和 " b"
        Splitter.on(',').trimResults().split("a , b"); 
        //忽略空字符串
        //结果必须是"a" 和 "b",而不是 "a" ,"" 和 "b"
        Splitter.on(',').omitEmptyStrings().split("a,,b"); 
    }
}


CaseFormat
public class CaseFormatTest {

    @Test
    public void test() throws IOException {
        // helloGuava => HELLO_GUAVA
        Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));
        // hello-guava => HelloGuava
        Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));
    }
}


其他
Preconditions
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
if (count <= 0) {
       throw new IllegalArgumentException("must be positive: " + count);
}

guava就可以这样,达到相同的效果
Preconditions.checkArgument(count > 0, "must be positive: %s", count);


I/O
ByteStreams提供了针对字节流的工具方法
InputStream from=...;
OutputStream to=...;
ByteStreams.copy(from,to); //复制


CharStreams提供了针对字符流的工具方法
Reader from =...;
Writer to =...;
CharStreams.copy(from, to); //复制


Files提供了针对文件的工具方法
File from=...;
File to=...;
Files.copy(from, to); //复制

Files.deleteDirectoryContents(File directory); //删除文件夹下的内容(包括文件与子文件夹)
Files.deleteRecursively(File file); //删除文件或者文件夹
Files.move(File from, File to); //移动文件


Resources提供了针对classpath下资源操作的工具方法
URL url = Resources.getResource("config.xml"); //获取classpath根下的config.xml文件url
7
13
分享到:
评论
1 楼 白云飞 2012-05-05  
不错,很好用,看了我也要学习下了

相关推荐

    Google Guava 多版本集合

    包含10.0.1、11.0.2、16.0.1、18.0、19.0、20.0、25.1多个版本。 Guava是一种基于开源的Java库,其中包含谷歌正在由他们...这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。

    java集合分组(Guava)

    因工作的需要,利用Guave对集合进行分组。这是个最简单的例子,希望对大家有用。

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

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

    Guava开源集合

    http://www.cnblogs.com/snidget/archive/2013/02/05/2893344.html http://macrochen.iteye.com/blog/737058 http://code.google.com/p/guava-libraries/

    guava源文档

    guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...

    Guava 16.0 API (CHM格式)

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

    guava-31.1-jre.jar

    guava

    Stream API函数式编程和Guava操作

    Stream API常用操作,初步理解stream操作方法,对java8有初步认知。

    guava-23.0.zip guava.jar guava

    guava-23.0.zip guava.jar guava

    guava-17.0-API文档-中文版.zip

    赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...

    guava-23.0-API文档-中文版.zip

    赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...

    guava使用实例

    Guava使用实例,包含文件操作,字符串操作,基本类型操作,集合操作,断言操作

    guava-18.0-API文档-中文版.zip

    赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; 包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...

    不加密Google Guava视频教程.txt

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

    guava14.0.1chm帮助文档

    谷歌开发的集合操作包guava14.0.1版本帮助文档,包含集合的高级操作,使集合操作更加快速,简便

    Google Guava 15.0

    Google Guava 对java集合等一些列的封装,使之使用更加简单方便

    guava-20.0-API文档-中文版.zip

    赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...

    Guava官方教程-中文

    集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency libraries) 通用注解(common annotations) 字符串处理(string processing) 输入/输出(I/O),等等

    Guava的Jar包(guava-26.0-jre.jar)

    Guava是Google公司开发的一款适用于Java的工具类集合。

    guava不可修改集合

    Immutable(不可变)集合 是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。

Global site tag (gtag.js) - Google Analytics