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(){ ArrayListMultimapmultiMap = 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(){ ArrayListMultimapmultiMap = 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(){ ArrayListMultimapmultiMap = 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(){ ArrayListMultimapmultiMap = 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(){ HashMultimapmultiMap = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月07日 20时57分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!