guava的Table使用解析

一、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);}

各个方法较为简单这里就不一一列举了,唯一注意的是行和列对应的值可能为空,需单独处理。

猜你喜欢

转载自www.cnblogs.com/superchong/p/11649707.html