Guave
使用
引入依赖
maven:
1 | <dependency> |
gradle:
1 | compile 'com.google.guava:guava:28.1-jre' |
集合操作
创建不可变集合Immutable(不可变)对象
- 在多线程操作下,是线程安全的
- 所有不可变集合会比可变集合更有效的利用资源
- 中途不可改变
1 | ImmutableList<String> immutableList=ImmutableList.of("1","2","3","4"); |
当需要一个map中包含key为string,value为list类型时,使用guava是这样的:
1 | Multimap<String,Integer> map = ArrayListMultimap.create(); |
集合
1 | MultiSet: 无序+可重复 |
集合过滤
Predicate(断言)
1 | //按照条件过滤 |
集合 交、并、差集
1 | /*set*/ |
集合转化特定字符串
1 | //list -> String |
字符串转化特定集合
字符串转化list
1 | //java String -> list |
字符串转为map
1 | //string -> map |
字符串操作
在Splitter类中实现
1 | // 判断匹配结果 |
检查参数
1 | /use java |
方法声明(不包括额外参数) | 描述 | 检查失败时抛出的异常 |
---|---|---|
checkArgument(boolean) | 检查boolean是否为true,用来检查传递给方法的参数。 | IllegalArgumentException |
checkNotNull(T) | 检查value是否为null,该方法直接返回value,因此可以内嵌使用checkNotNull。 | NullPointerException |
checkState(boolean) | 用来检查对象的某些状态。 | IllegalStateException |
checkElementIndex(int index, int size) | 检查index作为索引值对某个列表、字符串或数组是否有效。 index > 0 && index < size | IndexOutOfBoundsException |
checkPositionIndexes(int start, int end, int size) | 检查[start,end]表示的位置范围对某个列表、字符串或数组是否有效 | IndexOutOfBoundsException |
然后看一下checkNotNull(T) 方法的源码:
1 |
|
就是封装了一下判空和抛出异常。
Ordering排序器
排序器[Ordering]是Guava流畅风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能。
1 | natural() 对可排序类型做自然排序,如数字按大小,日期按先后排序 |
示例
1 | Person person = new Person("aa",14); //String name ,Integer age |
计算中间代码的运行时间
1 | Stopwatch stopwatch = Stopwatch.createStarted(); |
TimeUnit 可以指定时间输出精确到多少时间
文件操作
1 | File file = new File("test.txt"); |
guava缓存
guava的缓存设计的比较巧妙,可以很精巧的使用。guava缓存创建分为两种,一种是CacheLoader,另一种则是callback方式
CacheLoader:
1 | LoadingCache<String,String> cahceBuilder=CacheBuilder |
callback方式:
1 | Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1000).build(); |