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类

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