Guava collections -- Table
发布日期:2021-06-29 12:51:56
浏览次数:3
分类:技术文章
本文共 1992 字,大约阅读时间需要 6 分钟。
Guava全文介绍地址:Google Guava
这次主要介绍是的com.google.common.collect.Table。Table是包含相有序的一对key值,称为行键和一个列键,一个值的集合。Table这种结构可以用于解决以下的的数据结构.private HashBasedTabletable = HashBasedTable.create();private Map > table2 = Maps.newHashMap();
给定的row key对应的映射到可能被看作是一个key值为列的Map。同样也可以将一个列做为Key值把行键/值为value的Map。注意,在一些实现,通过列做为key进行数据访问支持操作性能相比用行做为keyw值好。
返回集合或地图的方法总是返回底层表的内容。更新表可以改变这些集合的内容,并且改变集合也会改变这个table。修改表的所有方法都是可选的,和视图返回的表可能会或可能不会被修改。当修改不受支持,这些方法会抛出UnsupportedOperationException。
下面就介绍一个Table的主要用法:
1、prepare Data
public class TableTest { private HashBasedTabletable = HashBasedTable.create(); @Before public void setUp() { table.put(1, 1, "Rook"); table.put(1, 2, "Knight"); table.put(1, 3, "Bishop"); table.put(2, 1, "Lateral"); table.put(2, 2, "L-Shape"); table.put(2, 3, "Diagonal"); }}
2、行key与列key联合索引
@Test public void testHashBasedTablePut(){ assertThat(table.get(1,2),is("Knight")); assertThat(table.get(5,5),is(nullValue())); }
3、Column View
@Test public void testGetColumnView(){ MapcolumnMap = table.column(1); assertThat(columnMap.get(1),is("Rook")); assertThat(columnMap.get(2),is("Lateral")); columnMap.put(2,"Changed"); assertThat(table.get(2,1),is("Changed")); columnMap.put(3,"Added Value"); assertThat(table.get(3,1),is("Added Value")); }
4、Row View
@Test public void testGetRowView(){ MaprowMap = table.row(1); assertThat(rowMap.get(1),is("Rook")); assertThat(rowMap.get(2),is("Knight")); assertThat(rowMap.get(3),is("Bishop")); rowMap.put(4,"King"); assertThat(table.get(1,4),is("King")); assertThat(table.column(4).get(1),is("King")); }
5、Table Operation
@Test public void testTableOperations(){ table.contains(1,1); table.containsColumn(2); table.containsRow(1); table.containsValue("Rook"); }
更多功能等待你的发现。
转载地址:https://carlzone.blog.csdn.net/article/details/51865409 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月08日 15时50分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql用户口令中含有特殊字符@的情况下,如何正确链接数据库
2019-04-29
SpringFox接口文档API DOC
2019-04-29
netty优化策略
2019-04-29
架构师知识体系全景图
2019-04-29
guava中EventBus(事件总线)源码分析与使用
2019-04-29
程序员成神之路文章目录
2019-04-29
SASS软件的成熟度模型总结
2019-04-29
一次搞定redis使用
2019-04-29
最全架构设计实践方法论: 微服务
2019-04-29
Linux下简单几步安装AI开发环境-ROS(超有意思)
2019-04-29
epoll详解
2019-04-29
linux入门--磁盘管理之分区、格式化与挂载
2019-04-29
开发必备:HTTP 及 TLS
2019-04-29
如何设计自己的第一个加密交易机器人?
2019-04-29
TKDE 2020 | 综述:基于知识图谱的推荐系统
2019-04-29
休息时间!哪些业余活动能提升开发人员的技能?
2019-04-29
把人脑“森林”上传到计算机:人类脑计划只是一个科幻野心?
2019-04-29
智力测试:如何超越动物之智?
2019-04-29
事关人类生存?为什么要探寻AI系统的可解释性?
2019-04-29
安全工程师必知:常见Java漏洞有哪些?
2019-04-29