guava常用

教程:

http://www.yiibai.com/guava/

http://ifeve.com/google-guava/

optional

注意java8同样提供optional,区分

意义:

  • 使用Optional除了赋予null语义,增加了可读性,最大的优点在于它是一种傻瓜式的防护。
  • Optional 迫使你积极思考引用缺失的情况 因为你必须显式地从Optional获取引用。
  • 如同输入参数,方法的返回值也可能是null。和其他人一样,你绝对很可能会忘记别人写的方法method(a,b)会返回一个null,就好像当你实现method(a,b)时,也很可能忘记输入参数a可以为null。将方法的返回类型指定为Optional,方法的参数设置为Optional,也可以迫使调用者思考返回的引用缺失的情形。
  • isPresent方法可以判断实例是否为null,防止NullPointException发生;
  • 若引用为null则快速失败,如果有null值存在即刻报错而不是只要上下文接受处理null值就默认使用null值继续运行

方法:

1.常用静态方法:

Optional.of(T) 根据给定的引用创建Optional实例,若T为null,则抛出NullPointerException
Optional.absent() 创建一个不包含任何引用的Optional实例
Optional.fromNullable(T) 根据给定的引用创建Optional实例,若T为null,则创建一个Optional.absent

2.实例方法:

boolean isPresent() 如果Optional实例持有者包含一个非null的实例,则返回True,否则返回false
T get() 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则抛IllegalStateException
T or(T defaultValue) 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回这个defaultValue
T orNull() 如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回null
Set<T> asSet() 如果Optional实例持有者包含一个非null的实例,则返回一个只有一个元素的不可变Set,否则返回一个空Set

public class TestGuava {

  public static void main(String[] args) {
    Optional<Integer> a = Optional.of(15);
    Optional<Integer> b = Optional.absent();
    System.out.println(sum(a,b));

  }
  public static int sum(Optional<Integer> a,Optional<Integer> b){
    if(a.isPresent()&&b.isPresent()){
      return a.get()+b.get();
    }
    return 0;
  }
}

 

 

字符串工具

Joiner

import java.util.Arrays;
import com.google.common.base.Joiner;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testJoiner();    
   }

   private void testJoiner(){
      System.out.println(Joiner.on(",")
         .skipNulls()
         .join(Arrays.asList(1,2,3,4,5,null,6)));
   }
}

 

Splitter

import com.google.common.base.Splitter;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testSplitter();
   }

   private void testSplitter(){
      System.out.println(Splitter.on(',')
         .trimResults()
         .omitEmptyStrings()
         .split("the ,quick, , brown         , fox,              jumps, over, the, lazy, little dog."));
   }
}

 LoadingCache

提供一种localcache的实现方案

 

posted on 2018-01-15 00:22  已停更  阅读(758)  评论(0编辑  收藏  举报