概述
工具类就是封装平时常用的方法,不需要重复造轮子,今天介绍下谷歌的 guava。
guava 的优点:
- 高效设计良好的API,被 Google 的开发者设计,实现和使用
- 遵循高效的Java的语法实践
- 使代码更刻度,简洁,简单
- 节约时间,资源,提高生产力
Guava 工具包包含若干个 Google Java项目:
- 集合
- 缓存
- 原生类型支持
- 并发库
- 通用注解
- 字符串处理
- I/O 等
在使用时,只需要在项目依赖中加入 Google Guava:
1 | <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> |
集合
Google Guava 工具包提供了大量创建和使用集合的方法。
1 | public static void main(String[] args) { |
集合和特定字符串转换
1 | public static void main(String[] args) { |
将集合转换成特定字符串,很多工具都支持这个功能。
集合切割(Lists.partitions)
1 | public static void main(String[] args) { |
输出:
1 | [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]] |
其他功能
1 | public static void main(String[] args) { |
也支持很多Map的操作,现在列举一些基础使用方法:
1 | public static void main(String[] args) { |
字符串处理
1 | public static void main(String[] args) { |
并发库
ThreadFactoryBuilder
SettableFuture
ListenableFuture
Guava 定义了 ListenableFuture 接口并继承了JDK concurrent包下的Future 接口,扩展了一个addListener 监听方法,当任务执行完成,会主动回调该方法。主要也是弥补了JDK自带Future的不足,像Netty 也优雅的实现了异步回调机制,不需要手动通过 Future.get() 来获取结果。
Futures.addCallback
AsyncFunction
缓存
Guava Cache 可以作为本地缓存,支持很多方式
1 | public static void main(String[] args) throws ExecutionException, InterruptedException { |
文件I/O
1 | public static void main(String[] args) { |