Guava工具类
简介
Guava 是Google基于java1.6开发的工具扩展库。
主要包括:
annotations 普通注解类型
base 基本工具类库和接口
cache 缓存工具包,非常简单易用且功能强大的JVM内缓存
collect 带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合
eventbus 发布订阅风格的事件总线
graph 图标
hash 哈希工具包
io I/O工具包
math 原始算术类型和超大数的运算工具包
net 网络工具包
primitives 八种原始类型和无符号类型的静态工具包
reflect 反射工具包
concurrent 多线程工具包(废掉了)
主要功能和用法
com.google.guava
guava
23.0
基本工具 [Basic utilities]
1)使用和避免为NULL
null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服。很多Guava工具类用快速失败拒绝null值,而不是盲目地接受
2)前置条件
让方法中的条件检查更简单
3)常见Object对象
简化Object方法实现,如hashCode()和toString()
4)排序
5)Throwables
简化了异常和错误的传播与检查
集合[Collections]
不可变集合: 用不变的集合进行防御性编程和性能提升。
新集合类型: multisets, multimaps, tables, bidirectional maps等。
强大的集合工具类: 提供java.util.Collections中没有的集合工具。
让实现和扩展集合类变得更容易,比如创建Collection的装饰器,或实现迭代器。
缓存
Guava Cache:本地缓存实现,支持多种缓存过期策略
//初始化 Guava内存 LRU算法
private static LoadingCache localCache = CacheBuilder.newBuilder()
.initialCapacity(1000)
.maximumSize(10000)
.expireAfterAccess(12, TimeUnit.HOURS)
.build(new CacheLoader() {
//默认的数据加载实现,当调用get取值的时候,如果key没有对应的值,就调用这个方法进行加载
@Override
public String load(String s) throws Exception {
return "null";
}
});
public static void setKey(String key, String value) {
localCache.put(key, value);
}
public static String getKey(String key) {
String value = null;
try {
value = localCache.get(key);
if ("null".equals(value)) {
return null;
}
} catch (ExecutionException e) {
log.error("localCache get error", e);
}
return null;
}
字符串处理[Strings]
非常有用的字符串工具,包括分割、连接、填充等操作
原生类型[Primitives]
扩展 JDK 未提供的原生类型(如int、char)操作, 包括某些类型的无符号形式
区间[Ranges]
可比较类型的区间API,包括连续和离散类型
I/O
简化I/O尤其是I/O流和文件的操作,针对Java5和6版本
散列[Hash]
提供比Object.hashCode()更复杂的散列实现,并提供布鲁姆过滤器的实现
事件总线[EventBus]
发布-订阅模式的组件通信,但组件不需要显式地注册到其他组件中
数学运算[Math]
优化的、充分测试的数学工具类
反射[Reflection]
Guava 的 Java 反射机制工具类