教程:

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的实现方案

guava常用的更多相关文章

  1. guava常用操作

    Jack47 我思故我在 Google Java编程库Guava介绍 本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含 ...

  2. Guava 常用工具类

    引入guava包: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava ...

  3. guava常用集合交集,差集,并集,补集操作

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...

  4. Google Guava 常用集合方法

    /** * Author: momo * Date: 2018/6/7 * Description: */ public class ListTest { public static void mai ...

  5. Google的Java常用类库 Guava资料

    java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子 ...

  6. 常用限流算法与Guava RateLimiter源码解析

    在分布式系统中,应对高并发访问时,缓存.限流.降级是保护系统正常运行的常用方法.当请求量突发暴涨时,如果不加以限制访问,则可能导致整个系统崩溃,服务不可用.同时有一些业务场景,比如短信验证码,或者其它 ...

  7. Google Java编程库Guava介绍

    本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含集合(Collections),缓存(Caching),并发编程库(C ...

  8. [Java 缓存] Java Cache之 Guava Cache的简单应用.

    前言 今天第一次使用MarkDown的形式发博客. 准备记录一下自己对Guava Cache的认识及项目中的实际使用经验. 一: 什么是Guava Guava工程包含了若干被Google的 Java项 ...

  9. Guava学习笔记(一)概览

    Guava是谷歌开源的一套Java开发类库,以简洁的编程风格著称,提供了很多实用的工具类, 在之前的工作中应用过Collections API和Guava提供的Cache,不过对Guava没有一个系统 ...

随机推荐

  1. centos文件与权限

    切换目录 cd:切换目录. 当我们需要进入到别的目录的时候,就需要使用到cd这个命令. ‘ cd这个命令主要有以下几种使用方式; cd [~]:进入当前用户的家目录,比如我是fuwh这个用户登陆的,则 ...

  2. HTML5的 input:file上传 以及 类型控制

    以HTML5的文件上传API 如下demo代码在.html文件打开即可: !DOCTYPE html> <html lang="zh_cn"> <head& ...

  3. Web版微信协议分析—版本2

    微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片.3.微信客户端扫描该图片,在客户端确认登录.4.浏览器不停的调用一个接口, ...

  4. 推荐系统之协同过滤的原理及C++实现

    1.引言 假如你经营着一家网店,里面卖各种商品(Items),有很多用户在你的店里面买过东西,并对买过的Items进行了评分,我们称之为历史信息,现在为了提高销售量,必须主动向用户推销产品,所以关键是 ...

  5. 使用SSH远程登陆Linux

    ⒈SSH介绍 SSH(Secure Shell)由IETF的网络工作小组(NetWork Working Group)所制定,SSH是建立在应用层和传输层基础上的安全协议. SSH是目前较可靠,专为远 ...

  6. HTMl学习笔记02-编辑器

    工欲善其事,必先利其器 使用专业HTML编辑器来编辑HTML,推荐使用Notepad++,中文界面. 在Notepad++安装完成后,点击文件>新建.语言>H中选择HTML 在新建的文件输 ...

  7. 深入解析内存原理:SRAM的基本原理

    1. SRAM芯片的引脚定义早期的SRAM 芯片采用了20 线双列直插(DIP:Dual Inline Package)封装技术,它们之所以具有这么多的针脚,是因为它们必须:• 每个地址信号都需要一根 ...

  8. 一步步实现windows版ijkplayer系列文章之五——使用automake生成makefile

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  9. Linux常用命令3(压缩和解压缩总结)

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  10. TomCat安装配置教程

    一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下载,也可以直接度娘. 2.下载完毕后,安装jdk,​直接按照安装向导的提示安装即可,安装时可以自己选择安装路径,我的安 ...