一、Map<R,Map<C,V>>的缺点
Java编程中是否还在为map的嵌套而烦恼,就算stream的兴起也无法解决剖解内层map的痛苦。
为此Google设计了table解决该问题,table的底层实现仍然是嵌套map,只是在此基础上提供了若干api,极大简化了用户的开发工作。
二、开发流程
1,引入jar包
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
<scope>compile</scope>
</dependency>
2,使用方式
Table<R,C,V> table = HashBasedTable.create();
由泛型可以看出,table由双主键R,C共同决定,V是存储值
3,新增数据:
table.put(R,C,V);
4,获取数据
V v = table.get(R,C);
5,遍历数据
Set<R> set = table.rowKeySet();
Set<C> set = table.columnKeySet();
三、底层解析
final Map<R,Map<C,V>> backingMap;
可以看出底层代码仍然使用的是嵌套MAP结构
例:
public V put(R rowKey, C columnKey, V value) { return row(rowKey).put(columnKey, value);}
各个方法较为简单这里就不一一列举了,唯一注意的是行和列对应的值可能为空,需单独处理。