Guava collections -- Multimaps
发布日期:2021-06-29 12:51:55 浏览次数:2 分类:技术文章

本文共 2914 字,大约阅读时间需要 9 分钟。

Guava全文介绍地址:Google Guava

这次主要介绍是的是com.google.common.collect.Multimaps.主要的作用是就与Guava Multimap相关的静态的实用方法。所以就不得不介绍一下com.google.common.collect.Multimap。
Multimap将键映射到值的集合,类似于地图,但在每个键可能与多个值有关。你可以想象把一个multimap想象成一个map,但是这个map可以包含非空的一个集合.
下面就是它的例子:
- a -> 1,2
- b -> 3
或者像map一样只是单个的key-value
- a -> 1
- b -> 2
- c -> 3
注意:
虽然第一例子解释像大多数多重映射是如何实现的,Multimap的API的设计是基于第二种形式。所以,使用上面所示的多重映射作为一个例子,它的size()3,不是2,它的value()的值集合是[1、2、3],而不是[[1,2],[3]]。对于第一个风格是更有用的那些时候,使用Multimap的asMap()视图(或者创建一个Map

1、Multimap的create()

@Test    public void testArrayListMultiMap(){        ArrayListMultimap
multiMap = ArrayListMultimap.create(); multiMap.put("Foo","1"); multiMap.put("Foo","2"); multiMap.put("Foo","3"); List
expected = Lists.newArrayList("1","2","3"); assertEquals(multiMap.get("Foo"),expected); }

2、Multimap的的size()

@Test    public void testArrayListMultiMapSize(){        ArrayListMultimap
multiMap = ArrayListMultimap.create(); multiMap.put("Foo","1"); multiMap.put("Foo","2"); multiMap.put("Foo","3"); multiMap.put("Bar","1"); multiMap.put("Bar","2"); multiMap.put("Bar","3"); Collection
expected = Lists.newArrayList("1","2","3","1","2","3"); assertThat(multiMap.size(),is(6)); assertArrayEquals(multiMap.values().toArray(), expected.toArray()); }

从上面的结果也就证明了上面的所说的MultiMap的value的存储方式。

3、Multimap的asMap()

@Test    public void testArrayListMultiMapSizeAsMap(){        ArrayListMultimap
multiMap = ArrayListMultimap.create(); multiMap.put("Foo","1"); multiMap.put("Foo","2"); multiMap.put("Foo","3"); multiMap.put("Bar","1"); multiMap.put("Bar","2"); multiMap.put("Bar","3"); Map
> map = multiMap.asMap(); assertThat(map.size(),is(2)); map.get("Foo").remove("3"); assertThat(multiMap.size(), is(5)); multiMap.put("Baz", "1"); assertThat(map.size(), is(3)); map.get("Foo").add("4"); assertThat(multiMap.size(), is(7)); }

4、ArrayListMultimap多个一样的key值

@Test    public void testArrayListMultimapSameKeyValue(){        ArrayListMultimap
multiMap = ArrayListMultimap.create(); multiMap.put("Bar","1"); multiMap.put("Bar","3"); multiMap.put("Bar","2"); multiMap.put("Bar","3"); multiMap.put("Bar","3"); List
expected = Lists.newArrayList("1","3","2","3","3"); assertEquals(multiMap.get("Bar"),expected); }

5、HashMultiMap多个一个的key值

@Test    public void testHashMultiMapSameKeyValue(){        HashMultimap
multiMap = HashMultimap.create(); multiMap.put("Bar","1"); multiMap.put("Bar","2"); multiMap.put("Bar","3"); multiMap.put("Bar","3"); multiMap.put("Bar","3"); assertThat(multiMap.size(),is(3)); }

更多功能等待你的发现。

转载地址:https://carlzone.blog.csdn.net/article/details/51857441 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Guava collections -- BiMap
下一篇:Guava collections -- Maps

发表评论

最新留言

不错!
[***.144.177.141]2024年04月07日 20时57分17秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章