Guava 解析
前言
Guava 本身适配不同的环境,Jdk 1.8 以上使用 jre flavor,Jdk 1.7 和 android 使用 android flavor。
类库的作者,不要使用 @Beta 成员,以后它们不会是 source-compatible。但我们可以使用其他成员,它们会是 binary-compatible,Guava 现在不会再因为非安全原因删除成员了,即使是 @Deprecated 的。
可用的功能见这个 User Guide。
common
Collect
Multimap
这个数据结构首先是一个接口,有以下子接口: ListMultimap、SetMultimap。不同的子接口的 Get 方法返回不同的数据结构。
有两种方法可以理解这个数据结构:
1 |
|
第一种形式同 Stream 的 groupingBy 的操作结果类似:
1 |
|
第一种形式必须使用 asMap 创造一种视图,size 为 2。
1 |
|
第二种形式本身属于天然形式,size 为 3(非 list 形式的,意味着 total entry count)。
所有的方法,都是视图方法:
- asMap(), mentioned above
- keys(), keySet(), values(), entries(), which are similar to the corresponding view collections of Map
- and, notably, even the collection returned by get(key) is an active view of the values corresponding to key 这一点很容易被忽略
Multimaps 是 Map
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.