import com.google.common.collect.Table;
import com.google.common.collect.TreeBasedTable;
import lombok.extern.slf4j.Slf4j;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
@Slf4j
public class GuavaTable {
/**
* table使用场景:
* 1. 计算学生在某科的成绩,使用table记录这种数据
* Table<某科,学生,成绩>
* 2. Table可以作为数据转化中间站
*
* @return
* @throws
*/
public static void main(String[] args) {
/**
* map是线,那么table就是桌面
*
* Table<row,column,value>
* Table<x轴,y轴,value>
* map<x轴,value>
*/
Table<Long, String, String> treeBasedTable = TreeBasedTable.create();
// 添加元素
treeBasedTable.put(1L, "123", "1234");
treeBasedTable.put(1L, "1234", "12345");
treeBasedTable.put(1L, "1234", "12346");
treeBasedTable.put(2L, "1234", "12346");
// 获取某个元素
String s = treeBasedTable.get(1L, "123");
log.info("\n" + s);
// 获取某个元素
String s1 = treeBasedTable.get(1L, "1234");
log.info("\n" + s1);
// 通过y轴的值返回一个map<x,value>
Map<Long, String> column = treeBasedTable.column("1234");
// 通过x轴的值返回一个map<y,value>
Map<String, String> row = treeBasedTable.row(1L);
log.info("\n" + column.toString());
// 判断table上是否包含(x,y)这个点
boolean contains = treeBasedTable.contains(2L, "1234");
log.info("\n" + contains);
// 返回所有的点对应的值
Collection<String> values = treeBasedTable.values();
log.info("\n" + values);
// cells 数据结构: [(1,123)=1234, (1,1234)=12346, (2,1234)=12346]
Set<Table.Cell<Long, String, String>> cells = treeBasedTable.cellSet();
log.info("\n" + cells);
}
}
Guava-Table
最新推荐文章于 2024-10-12 22:35:37 发布