Multimap类

由Guava提供的类,可以让键一次可被映射到多个值(多个value共用一个key),也可以理解为”键-单个值映射”的集合。
如果原来工作中要实现:
a -> 1
a -> 2
a ->3
那么Multimap类就是
a -> [1, 2, 3]

创建Multimap
Multimap multimap= ArrayListMultimap.create();
(还有HashMultimap、LinkedListMultimap、LinkedHashMultimap、TreeMultimap等实现类)

例如,在写一个班级的管理页面,要求点击班级可以显示出班级下的所有学生,可以以班级的name为key(如3年2班),将一个班级下的所有学生为value存到一个Multimap类中,这样方便我们遍历一个班级下的所有学生.

Multimap classStudentMap = ArrayListMultimap.create();
List students = Lists.newArrayList();
for(Student student : students ){
classStudentMap (student .getclassName,student );
}

Multimap还提供了诸如remove(K, V)、removeAll(K)、replaceValues(K, Iterable)之类的方法,总之是个很强大很实用的类

但Multimap并不是map,可以使用asMap()视图获取一个Map>。(或者用静态方法Multimaps.asMap()为ListMultimap返回一个Map>。

Multimap.size()返回所有”键-单个值映射”的个数,而非不同键的个数。要得到不同键的个数,请改Multimap.keySet().size()。

你可能感兴趣的:(Multimap类)