Multimap类

作者: Drunk320 | 来源:发表于2018-07-17 23:32 被阅读62次

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

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

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

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

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

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

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

相关文章

  • Multimap类

    由Guava提供的类,可以让键一次可被映射到多个值(多个value共用一个key),也可以理解为”键-单个值映射”...

  • The C++ standard library(侯捷/孟岩 译

    6.6 map and multimap(page194) map/multimap将键值对作为元素进行管理。mu...

  • 2021-01-25

    Set,Multiset,Map,Multimap都是有有内部排序的数据结构,其中Multi类为可重复键的数据结构...

  • MultiMap

    聊骚 相信大家都碰到过这样的场景 需要将一个列表根据列表中的实体的某个字段进行分类。 比较典型的场景就是我们查询多...

  • c++map

    初始化: 访问 遍历 map与multimap差别仅仅在于multimap允许一个键对应多个值

  • Guava - 强大的集合工具Multimap

    一、简介 Multimaps是Guava给自身新增的集合类型Multimap提供的特有工具类,它提供了一些常用的、...

  • C++ 容器浅析<二>

    map容器 键值对容器 multimap容器

  • [Hazelcast系列 六] 分布式MultiMap

    Hazelcast中的MultiMap 是一个key可以有多个值的特殊map。和其他数据结构一样,MultiMap...

  • 11-关联容器

    #include set,multiset #include map,multimap #include unor...

  • 容器是否带sort()函数

    array、vector、deque、 set/multiset、map/multimap、 unordered_...

网友评论

    本文标题:Multimap类

    本文链接:https://www.haomeiwen.com/subject/krcnpftx.html