接口声明
public interface Multimap<K,V>
我们一般使用map,只能保证一个key对应一个value,如果我们相对应多个values,我们不得不选择这种模式:
当我们想添加一个value,我们不得不写更多的累赘的代码,比如:
我们不得不,先判断它是否第一次插入,如果是的话,那就我们得创建一个新的list,然后,我们在往进去插入一个元素,不是的话,我们直接插入,是不是感觉特别费事。
Guava处理
我们使用,Multimap 顾名思义通过名字可想,Multi就是很多的意思,允许我们一个关键字对应多个value,我们可以这样创建
方法:
S.N.
|
方法及说明
|
---|---|
1 | Map<K,Collection<V>> asMap() 返回此multimap中的视图,从每个不同的键在键的关联值的非空集合映射。 |
2 | void clear() 将删除所有multimap中的键值对,留下空。 |
3 | boolean containsEntry(Object key, Object value) 返回true如果此多重映射包含至少一个键 - 值对用键键和值value。 |
4 | boolean containsKey(Object key) 返回true,如果这个multimap中至少包含一个键值对的键key。 |
5 | boolean containsValue(Object value) 返回true,如果这个multimap至少包含一个键值对的值值。 |
6 | Collection<Map.Entry<K,V>> entries() 返回包含在此multimap中,为Map.Entry的情况下,所有的键 - 值对的视图集合。 |
7 | boolean equals(Object obj) 比较指定对象与此多重映射是否相等。 |
8 | Collection<V> get(K key) 返回,如果有的话,在这个multimap中键关联的值的视图集合。 |
9 | int hashCode() 返回此多重映射的哈希码。 |
10 | boolean isEmpty() 返回true,如果这个multimap中未包含键 - 值对。 |
11 | Multiset<K> keys() 返回一个视图集合包含从每个键值对这个multimap中的关键,没有折叠重复。 |
12 | Set<K> keySet() Returns a view collection of all distinct keys contained in this multimap. |
13 | boolean put(K key, V value) 存储键 - 值对在这个multimap中。 |
14 | boolean putAll(K key, Iterable<? extends V> values) 存储一个键 - 值对在此multimap中的每个值,都使用相同的键 key。 |
15 | boolean putAll(Multimap<? extends K,? extends V> multimap) 存储了所有键 - 值对多重映射在这个multimap中,通过返回 multimap.entries() 的顺序. |
16 | boolean remove(Object key, Object value) 删除一个键 - 值对用键键,并从该多重映射的值的值,如果这样的存在。 |
17 | Collection<V> removeAll(Object key) 删除与键键关联的所有值。 |
18 | Collection<V> replaceValues(K key, Iterable<? extends V> values) 存储与相同的键值,替换任何现有值的键的集合。 |
19 | int size() 返回此多重映射键 - 值对的数量。 |
20 | Collection<V> values() 返回一个视图集合包含从包含在该multimap中的每个键 - 值对的值,而不发生重复 (so values().size() == size()). |