nan*_*sen 11 java collections guava
我真的很喜欢Multimap谷歌番石榴库的类.它是一种地图类型,您可以在其中为键添加多个值,因此它可以有效地从键映射到某种类型的集合.我特别喜欢的是一个Multimaps.index()函数,它接受一个Iterable和一个键函数,并返回一个Multimap组(或索引或映射)的元素,Iterable该函数为每个元素返回的值.
我发现有点奇怪的是Multimap.values()返回一个扁平集合而不是集合集合?因此,对索引函数进行分组会让我失去一次Ì检索值.我可以通过调用Multimap.asMap()然后调用values()来解决这个问题.
有谁知道为什么Multimap行为那样可能有意义?
Lou*_*man 14
Multimap.asMap().values()不是办法围绕这个问题-这是故意的是Multimap提供两个访问它,得到一个的方式Collection<Collection<V>>通过asMap().values()并获得扁平Collection<V>带values().
更广泛地说,Multimap尝试不以刚需"的地图收藏",而是"一般的方式与多个值的键关联." 所以你得到的entries()方法除了values()和keys().该asMap()视图提供了一种将其视为"集合映射"的方法,但它具有非常不同的语义,并不总是您正在寻找的语义.
无论如何,该values方法只是为了填补与填充的不同的利基asMap().values().
有谁知道为什么Multimap表现得那么有意义?
Multimap应被视为普通地图,其中键不需要是唯一的.
Key Val
a -> 1
b -> 2
a -> 3
Values: {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5058 次 |
| 最近记录: |