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的实现方案
guava常用的更多相关文章
- guava常用操作
Jack47 我思故我在 Google Java编程库Guava介绍 本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含 ...
- Guava 常用工具类
引入guava包: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava ...
- guava常用集合交集,差集,并集,补集操作
<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...
- Google Guava 常用集合方法
/** * Author: momo * Date: 2018/6/7 * Description: */ public class ListTest { public static void mai ...
- Google的Java常用类库 Guava资料
java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子 ...
- 常用限流算法与Guava RateLimiter源码解析
在分布式系统中,应对高并发访问时,缓存.限流.降级是保护系统正常运行的常用方法.当请求量突发暴涨时,如果不加以限制访问,则可能导致整个系统崩溃,服务不可用.同时有一些业务场景,比如短信验证码,或者其它 ...
- Google Java编程库Guava介绍
本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含集合(Collections),缓存(Caching),并发编程库(C ...
- [Java 缓存] Java Cache之 Guava Cache的简单应用.
前言 今天第一次使用MarkDown的形式发博客. 准备记录一下自己对Guava Cache的认识及项目中的实际使用经验. 一: 什么是Guava Guava工程包含了若干被Google的 Java项 ...
- Guava学习笔记(一)概览
Guava是谷歌开源的一套Java开发类库,以简洁的编程风格著称,提供了很多实用的工具类, 在之前的工作中应用过Collections API和Guava提供的Cache,不过对Guava没有一个系统 ...
随机推荐
- 05-迪米特法则(LOD 又名: 最少知道原则)
1. 背景 类与类之间的关系越密切,耦合度越大,当一个类发生变化时,对另一个类的影响也越大. 2. 定义 一个类应该对其它类保持最少的了解. 3. 解决方法 尽量降低类与类 ...
- javascript innerHTML、outerHTML、innerText、outerText的区别(转)
1.功能讲解: innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 innerText 设置或获取位于对象起始和结束标签内 ...
- 八、uboot 代码流程分析---board_init_f
接着上一节,板子开始做前期初始化工作. 8.1 board_init_f Board_f.c (common) /* 板子初次初始化.boot_flags = 0 */ void board_init ...
- 四、NAND Flash
4.1 nand flash启动u-boot nand flash 启动的时候,CPU 需要将 nand flash 中前面 4KB 的内容复制到 SRAM 中执行,然后将 NAND Flash 中的 ...
- Leanote 蚂蚁笔记 云笔记
Leanote 蚂蚁笔记 1.Leanote 数据存储是使用mongo存放的,所以需要安装mongo包 1.MongoDB 数据存储 Leanote 依赖 MongoDB 作为数据存储,下面开始安装 ...
- js对当前时间的相关操作
链接:https://www.cnblogs.com/visi_zhangyang/p/3490122.html js中获得当前时间是年份和月份,形如:201208 //获取完整的日期 v ...
- mysql数据库备份和恢复
1.数据库备份 mysqldump -uroot -proot jira736 > jira736.sql 2.数据库恢复 mysql -uroot -proot jira762 < ji ...
- include的作用
#include发生在预处理阶段,整个编译链接过程,#include是最简单的了,没有之一.就是在include的位置直接把文件原原本本完完整整一字不落的包含进来,下面举一个极端点的例子: //fil ...
- 一:对程序员来说CPU是什么?
0.开篇 (1)程序是什么? 指示计算机每一步动作的一组指令 (2)程序是由什么组成的? 指令和数据 (3)什么是机器语言? ...
- ubuntu14.04 放开串口权限
可以用如下命令查看串口信息: ls -l /dev/ttyUSB*来查看相关的信息. 但是普通用户没有usb操作权限(函数open()打不开串口:refused),如果我们想在ROS程序里面打开串口, ...