Guava collections -- Multimaps
发布日期:2021-06-29 12:51:55
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月24日 16时09分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
npy文件和pkl文件的保存和读取
2019-04-29
lmdb文件的读取和保存
2019-04-29
cv2和二进制互转
2019-04-29
二分查找及原理
2019-04-29
torch Missing key(s) in state_dict
2019-04-29
PA,MIOU,FWIOU
2019-04-29
数组-769. 最多能完成排序的块
2019-04-29
超过256的像素值的保存
2019-04-29
middle-判断二分图-深度优先和广度优先
2019-04-29
二进制补码和原码的记录
2019-04-29
无重叠区间+用最少数量的箭引爆气球
2019-04-29
买卖股票的最佳时机
2019-04-29
非递减数列
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
分治法:241. 为运算表达式设计优先级
2019-04-29
广度优先遍历:二进制矩阵中的最短路径
2019-04-29
广度优先遍历:set集合的速度远远比list快:完全平方数
2019-04-29
广度+深度:岛屿的最大面积/岛屿数量
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
130. 被围绕的区域
2019-04-29