zoukankan      html  css  js  c++  java
  • google guava使用例子/示范

    google guava使用例子/示范(一)

    guava是Java的一个扩展类库,在google的许多项目中使用过了,现在最为一个 开源的Java类库广泛使用(http://code.google.com/p/guava-libraries/)。

    guava类库扩展的主要是这些相关类:collections(集合类),concurrency(并发),primitives,reflection(反射),comparison,I/O,hashing,networking(网络),strings(字符串),math(计算),in-memory caching(内存缓存),in-memory publish/subscirbe(内存发布订阅)等。

    guava的目标是让我们写更少的代码,并且可以让我们写的代码更简单、清晰、可读性强。

    下面我们对guava的使用方法和场景做一些介绍。

    guava库需要在大于JDK1.6的版本下使用。

    1.预先判断Preconditions

    通常我们检查参数,是用如下方法

            publicvoid setRating(Double rating){
                   
    if(rating ==null){
                           
    thrownewNullPointerException();
                   
    }
                   
    Double r = rating;
           
    }

    如果你使用guava的类库,可以使代码更加简洁

            publicvoid setRating(Double rating){
                   
    Double r = checkNotNull(rating);
           
    }

    不过,记得添加静态引用(import static com.google.common.base.Preconditions.checkNotNull;),在Eclipse中的设置,可以参考(eclipse中添加静态引用)

    除了checkNotNull之外,Preconditions还提供了一些其他的方法,如chekArgument,checkState,checkElementIndex,checkPositionIndex等,更多可参考Preconditions API。

    2.Object.toStringHelper()

     这个方法主要是用于更加简单的实现Object.toString()方法

            publicString toString(){
                   
    returnObjects.toStringHelper(this).add("name", name)
                                                                                           
    .add("id", userId)
                                                                                           
    .add("pet",petName)
                                                                                           
    //.omitNullValues()
                                                                                           
    .toString();
           
    }

    omitNullValues()当某个属性有空值的时候,不输出该熟悉。输出内容如下:

    TestGuava{name=qiyadeng, id=12}

    3.Stopwatch(计时器)

    我们经常需要判断某一段语句执行需要多少时间,过去常用的做法是记录运行前的时间,然后用运行完成的时间减去运行前的时间,并且转换成我们可读的秒或是毫秒时间(这个转换过程可并不简单),在guava中的做法是:

                    Stopwatch stopwatch =newStopwatch().start();
                   
    //do something test
                   
    for(int i =0; i <10000; i++){
                   
    }
                   
    long nanos = stopwatch.elapsed(TimeUnit.NANOSECONDS);
                   
    System.out.println(nanos);

    4.CharMatcher

    字符匹配的方法特别多,举一个例子过滤用户的输出

                    String userInput ="nihao1234-1";
                   
    CharMatcher ID_MATCHER =CharMatcher.DIGIT.or(CharMatcher.is('-'));
                   
    System.out.println(ID_MATCHER.retainFrom(userInput));

    可以把输入的的字符类型去掉,只输出1234-1。更多的使用方法可以参考CharMatcher

    5.String Joining 字符串连接

    可以快速地把一组字符数组连接成为用特殊符合连接的一个字符串,如果这组字符中有null值的话,我们可以使用skipNulls或是useForNull来控制我们要输出的内容。

                    //Joiner JOINER= Joiner.on(",").skipNulls();
                   
    Joiner JOINER=Joiner.on(",").useForNull("null");
                   
    String str = JOINER.join("hello","world",null,"qiyadeng");
                   
    //hello,world,null,qiyadeng

    6.String Splitting字符串分割

    有这样一组字符串”hello,,qiyadeng,com,”我们用split(“,”)分割字符串,得到的结果是["hello","","qiyaeng","com"],但是我们如果希望的是把空值去掉,还需要另外处理,使用guava的Splitter可以简单做到。

                    Iterable<String> splitStr =Splitter.on(',').trimResults().omitEmptyStrings().split("hello,qiyadeng,com");
                   
    for(String string : splitStr){
                           
    System.out.println(string);
                   
    }

    原创文章,作者:qiyadeng,转载请注明: 转载自http://www.qiyadeng.com/

    本文链接地址: google guava使用例子/示范(一)

     
     
     
  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3135019.html
Copyright © 2011-2022 走看看