Guava
集合
BiMap
双映射是一种既保留其值的唯一性,又保留了其键的唯一性的映射.此约束使双映射能够支持"反向视图",即另一个双映射包含与双映射相同的条目,但键和值相反.
ClassToInstanceMap
一个映射,其中每个条目将java原始类型映射到该类型的实例.除了实现Map之外,还可以使用其他类型安全的操作putInstance和getInstance. 与任何其他Map<Class,Object>一样,此映射可能包含原始类型的条目,并且原始类型以及其相应的包装类型可能映射到不同的值.
ListMultimap
可以保存重复的键值对并维护给定键的插入顺序的Multimap.有关所有Multimap共有的信息,请参阅Multimap文档.get/removeAll和replaceValues方法均返回一个值List.尽管方法签名没有明确说明,但asMap返回的映射具有List值.
Multimap
将键映射到值的集合,类似于Map ,但其中每个键可能与多个值相关联。 您可以将多重映射的内容可视化为从键到非空值集合的映射: 一 → 1, 2 b → 3 ...或者作为单个“扁平”的键值对集合: 一 → 1 一 → 二 b → 3 重要提示:尽管第一种解释类似于大多数多映射的实现方式,但Multimap API 的设计基于第二种形式。因此,以上面显示的多映射为例,其size为3 ,而不是2 , values集合为[1, 2, 3] ,而不是[[1, 2], [3]] 。当第一种样式更有用时,请使用多映射的asMap视图(或首先创建Map<K, Collection > )。
Table
将有序的一对键(称为行键与列键)与单个值相关联的集合.表可能很稀疏,只有一部分行键/列键对具有相应的值.可以将与给定的映射视为一个Map,其键为列.反向映射也是可行的,即将列与行键/值映射相关联.请注意,在某些实现中,与按键访问数据相比,按列键访问数据可能支持的操作较少或性能较差.返回集合或映射的方法始终返回基础表的视图.更新表可以更改这些集合的内容,而更新集合也会更改表.所有修改表的方法都是可选的,表返回视图可能可修改,也可能不可修改.当不支持修改时,这些方法将抛出UnsupportedOperationException.
实现类
ImmutableTable
HashBasedTable
TreeBasedTable
ArrayTable
Tables.newCustomTable