AbstractMapBasedMultimap是Multimap接口的基础实现类,实现了Multimap中的绝大部分方法,其中有许多的方法还是靠实现类的具体实现,比如size()方法,其计算方法在不同实现是不一样的。同时,AbstractMapBasedMultimap类也定义了自己的一些方法,比如createCollection()。AbstractMapBasedMultimap类中主要存在以下两个成员变量:
private transient Map<K, Collection<V>> map;
private transient int totalSize;
map是存放所有的键值对;totalSize是存放所有值的数量。
AbstractMapBasedMultimap类将multimap转换为一个map,所有的元素都是存放在Map<k ,="" collection> map数据结构中,如下图所示:
所有实现Multimap接口的子类必须实现createCollection()方法,用于存放value的值。当需要向map中插入一对key→value键值对,而这个key不存在于multimap中,此时就需要调用createCollection(