一、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);}
各個方法較為簡單這里就不一一列舉了,唯一注意的是行和列對應的值可能為空,需單獨處理。