博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava包学习--Table
阅读量:7100 次
发布时间:2019-06-28

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

Table,顾名思义,就好像HTML中的Table元素一样,其实就是行+列去确定的值,更准确的比喻其实就是一个二维矩阵。

其实它就是通过行+列两个key去找到一个value,然后它又containsvalue、containsrow、containscolumn等方法来判断是否包含。

同事put方法也是3个参数;另外你可以通过row()或者column方法得到一列或者一行的一个map《k,v》值。

我感觉这个集合非常有想法,你在处理类似Dom中的二维数组中的值都可以在程序中用这个进行模拟。

具体的方法都非常简单,就不再写例子了。看下它的Hash实现类:

还是那一套,弄个接口,弄个抽象类实现接口,然后后面的具体实现去继承抽象类~~~bulabula

我们看看方法的具体实现,create:

public static 
HashBasedTable
create( int expectedRows, int expectedCellsPerRow) { checkNonnegative(expectedCellsPerRow, "expectedCellsPerRow"); Map
> backingMap = Maps.newHashMapWithExpectedSize(expectedRows); return new HashBasedTable
(backingMap, new Factory
(expectedCellsPerRow)); }

我们看一眼那个标准Table的实现就不难理解Table的结构了:

StandardTable(Map
> backingMap, Supplier
> factory) { this.backingMap = backingMap; this.factory = factory; }

public boolean containsValue(@Nullable Object value) {

for (Map<C, V> row : rowMap().values()) {
if (row.containsValue(value)) {
return true;
}
}
return false;
}

其实就是分开去循环了一下内容。

其实去看一下它的remove和get方法,中间都是先用R也就是行去获得了列的map,然后再用列的map去做具体处理。

虽然这个结果使用两个map也可以直接实现,但是人家能直接设计出来并且覆盖百分百用例然后封装好拿出来共享就真的不同了。

转载于:https://www.cnblogs.com/congsg2016/p/5122890.html

你可能感兴趣的文章
PHP服务器端API原理及示例讲解(接口开发)
查看>>
erlang遍历目录
查看>>
Stanford CS231n实践笔记(课时14卷积神经网络详解 上)
查看>>
文章标题
查看>>
MQ与webservice的区别,MQ的区别
查看>>
JS实现图片base64转blob对象,压缩图片,预览图片,图片旋转到正确角度
查看>>
『TensorFlow』生成式网络中的图片预处理
查看>>
译:7.使用Spring MVC服务Web内容
查看>>
【Windows】cmd条件判断
查看>>
图解Elasticsearch中的_source、_all、store和index属性
查看>>
Servlet路径跳转问题
查看>>
MySQL 单个表锁死 对查询语句无响应
查看>>
前端插件资源
查看>>
C# new和初始化
查看>>
多个方面比较电路交换、报文交换和分组交换的主要优缺点
查看>>
CentOS7 Failed to start LSB: Bring up/down解决方法
查看>>
【java】java中替换中括号[ ]操作
查看>>
重看计算机基础1:数据线、地址线,按字、按字节寻址。
查看>>
oracle 11g亿级复杂SQL优化一例(数量级性能提升)
查看>>
Qt Md5应用示例
查看>>