Multimap类

接口声明

public  interface Multimap<K,V>

我们一般使用map,只能保证一个key对应一个value,如果我们相对应多个values,我们不得不选择这种模式:

Map<String,List<MyClass>> myClassListMap test2 =  new  HashMap<String,List<MyClass>>()

当我们想添加一个value,我们不得不写更多的累赘的代码,比如:

void  putMyObject(String key, Object value) {
     List<Object> myClassList = myClassListMap.get(key);
     if (myClassList ==  null ) {
         myClassList =  new  ArrayList<object>();
         myClassListMap.put(key,myClassList);
     }
     myClassList.add(value);
}

我们不得不,先判断它是否第一次插入,如果是的话,那就我们得创建一个新的list,然后,我们在往进去插入一个元素,不是的话,我们直接插入,是不是感觉特别费事。


Guava处理

我们使用,Multimap 顾名思义通过名字可想,Multi就是很多的意思,允许我们一个关键字对应多个value,我们可以这样创建


Multimap<String,Object> myMultimap = ArrayListMultimap.create();

方法:

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()).

创建multimap

public  void  test1() {
     Multimap<Integer, String> myMultimap = ArrayListMultimap.create();
     myMultimap.put( 1 "one" );
     myMultimap.put( 1 "two" );
     List<String> strings =(List<String>) myMultimap.get( 1 );
     System.out.println(strings.size());
 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值