zoukankan      html  css  js  c++  java
  • 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的实现方案

  • 相关阅读:
    linux清理内存
    华为代码注释标准
    Spring缓存机制的理解
    jQuery实现动态分割div—通过拖动分隔栏实现上下、左右动态改变左右、上下两个相邻div的大小
    模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery
    js实现由分隔栏决定两侧div的大小—js动态分割div
    java基于socket的简单聊天系统
    中国移动归属地区号大全
    将本地光盘做成yum源
    windows下设置计划任务自动执行PHP脚本
  • 原文地址:https://www.cnblogs.com/raichen/p/8285125.html
Copyright © 2011-2022 走看看