提供两层映射关系(row, col)->value

1、Table接口

方法有

boolean contains(Object rowKey, Object columnKey)
boolean containsRow(Object rowKey)
boolean containsColumn(Object columnKey)
boolean containsValue(Object value)
V get(Object rowKey, Object columnKey)
boolean isEmpty()
int size()
boolean equals(Object obj)
int hashCode()
void clear()
V put(R rowKey, C columnKey, V value)
void putAll(Table<? extends R, ? extends C, ? extends V> table)
V remove(Object rowKey, Object columnKey)
Map<C, V> row(R rowKey)
Map<R, V> column(C columnKey)
Set<Cell<R, C, V>> cellSet()
Set<R> rowKeySet()
Set<C> columnKeySet()
Collection<V> values()
Map<R, Map<C, V>> rowMap()
Map<C, Map<R, V>> columnMap()

2、实现

说明
HashBasedTable LinkedHashMap<R, LinkedHashMap<C, V>>实现
TreeBasedTable TreeMap<R, TreeMap<C,V>>实现
ArrayTable 一个二维数组实现
ImmutableTable ImmutableMap<R, ImmutableMap<C, V>>实现,对稀疏或密集的数据集都有优化

3、实践

3.1 添加maven依赖


<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version>
</dependency>

3.2  应用

3.2.1 创建表,填充数据

Table<String,String,Integer> tables = HashBasedTable.create();
tables.put("a", "javase", 80);
tables.put("b", "javaee", 90);
tables.put("c", "javame", 100);
tables.put("d", "guava", 70);
log.info("tables:{}", tables);

3.2.2 行读取

Set<String> students = tables.rowKeySet();
for (String student : students) {Map<String, Integer> rowMap = tables.row(student);Set<Map.Entry<String, Integer>> setEntries = rowMap.entrySet();for (Map.Entry<String, Integer> entry : setEntries) {log.info("entry:{}", entry);}
}

3.2.3 列读取

Set<String> courses = tables.columnKeySet();
for (String str : courses) {Map<String, Integer> colMap = tables.column(str);for (Map.Entry<String, Integer> entry : colMap.entrySet()) {log.info("entry:{}", entry);}
}

3.2.4 cell读取

Set<Cell<String, String, Integer>> cellSet = tables.cellSet();
for (Cell<String, String, Integer> cell : cellSet) {log.info("{} {} {}", cell.getRowKey(), cell.getColumnKey(), cell.getValue());
}

参考资料:

http://ifeve.com/google-guava-newcollectiontypes/

guava中的Table相关推荐

  1. 【cocos2d-x】Lua中的table函数库

    一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep,  start, end) concat是c ...

  2. 转HTML中的table转为excel

    转换html 中的table 为excel,firefox浏览器支持,代码如下 <%@ page language="java" contentType="text ...

  3. guava中 graphs 六

    2019独角兽企业重金招聘Python工程师标准>>> guava中 graphs 六 介绍 guava的common.graph 是一个图类型结构的库,也就是实体和他们之间的关系的 ...

  4. Guava中针对集合的 filter和过滤功能

    Guava中针对集合的 filter和过滤功能 博客分类:  JAVA相关 在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子: Java代码   ...

  5. ABAP中的Table Control编程

    SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏 ...

  6. antd table排序 vue_ant-design-vue中的table取消默认不排序的状态

    ant-design-vue中的table组件具有排序的属性,该排序属性有三种状态:升序.降序和不排序.在项目开发中,有时产品经理会要求排序时只能有升序或降序两种状态,而table组件中却没有相应的A ...

  7. Oracle中Cluster Table的使用

    大家对通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆.Cluster是存储一组table的一种方法,这些table共享同一数据块中的某 ...

  8. 简单分析Guava中RateLimiter中的令牌桶算法的实现

    为什么80%的码农都做不了架构师?>>>    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令 ...

  9. 网页表格线框html,关于Dreamweaver中怎么让html网页中的table边框细线显示?

    关于Dreamweaver中怎么让html网页中的table边框细线显示? 对于不是编程的我们,用Dreamweaver制作表格的`情况下.默认表格边框会标的比较粗,今天给大家介绍下制作西表格超级简单 ...

最新文章

  1. SqlServer项目经验:介质集有2个介质簇,但只提供了1个。必须提供所有成员
  2. a good way for improving my reading ability
  3. 复习--3--对于第三堂课的总结--将两个页面相互用超链接链接到一起
  4. Android Animation实现元素在屏幕上按照指定轨迹运动,以及出现NullPointerException的解决方案
  5. 【POJ - 3624 】Charm Bracelet (dp,0-1背包裸题)
  6. 这款插件不既有Chrome版【飞秋下载】
  7. hive 如何将数组转成字符串_Hive 字符串操作[转]
  8. 如何在 Pr 中创建动作序列?
  9. Atitit webservice的发现机制 discover机制
  10. 各国个人信息安全立法进度
  11. pyqt5标签中的字设置不同字体_PyQt5 控件字体样式等设置的实现
  12. ubuntu10.10下ESPON v350扫描仪的安装
  13. 写给大一充实,大二不顺,大三迷茫的同学
  14. 中国建筑设计行业市场调查研究及发展前景展望报告(2022-2028年)
  15. 利用Kmeans聚类进行用户分层分析
  16. 【宝藏分享】自从用了这款PPT插件,小伙伴们都跪着看我
  17. 面试官:什么是虚拟DOM?如何实现一个虚拟DOM?
  18. 【java工具方法】十六进制字符串转字符串
  19. npm登录:忘记了用户名和密码,通过邮箱找回流程
  20. ubuntu 18,问题总结

热门文章

  1. Task list not built during sync
  2. python求雅可比矩阵_提高自组雅可比矩阵的性能
  3. IOS应用图标上的数字提示实例
  4. xshell软件安装使用
  5. 大咖说·对话开源|与Tapdata论道数据技术开放生态
  6. 【转】grep 用法详解
  7. 国产 MCU AT32F403A 替换 STM32F103 can通讯测试
  8. 【烟台大学】寒暑假登录YTU——手机版+电脑版
  9. 互联网公司招聘--华为--校园招聘程序员--2017年笔试题
  10. 关于async、await 与 Promise的理解函数请求方法与使用