Table是Guava提供的一个接口 Interface Table,由rowKey+columnKey+value组成 它有两个键,一个值,和一个n行三列的数据表类似,n行取决于Table对对象中存储了多少个数据

主要使用的方法有:

所有行数据:cellSet()

所有第一个key值:rowKeySet()

所有课程:columnKeySet()

所有成绩:values()

课程成绩表:rowMap()+get(stu)/row(stu)

学生成绩表 columnMap()+get(course)/column(course)

给出一个学生-课程-成绩表,测试上面提到的方法,表如下 :

1.把数据存储到Table中,通过HashBasedTable.create()新建一个Table对象

Table tables=HashBasedTable.create();

tables.put("a", "javase", 80);

tables.put("b", "javaee", 90);

tables.put("c", "javame", 100);

tables.put("d", "guava", 70);

2.得到所有行数据 tables.cellSet()

Set> cells=tables.cellSet();

for(Cell temp:cells){

System.out.println(temp.getRowKey()+" "+temp.getColumnKey()+" "+temp.getValue());

}

输出结果:

d guava 70

b javaee 90

c javame 100

a javase 80

3.得到所有学生 rowKeySet()

Set students=tables.rowKeySet();

for(String str:students){

System.out.print(str+"\t");

}

输出结果:

d b c a

4.得到所有课程 columnKeySet()

Set courses=tables.columnKeySet();

for(String str:courses){

System.out.print(str+"\t");

}

输出结果:

guava javaee javame javase

5.得到所有成绩:values

Collection scores=tables.values();

for(Integer in:scores){

System.out.print(in+"\t");

}

输出结果:

70 90 100 80

6.得到学生的课程成绩表 rowMap+get(stu)/row(stu)

for(String str:students){

Map rowMap=tables.row(str);

Set> setEntry=rowMap.entrySet();

for(Entry entry:setEntry){

System.out.println(entry.getKey()+" "+entry.getValue());

}

}

输出结果:

guava 70

javaee 90

javame 100

javase 80

7.得到学生的姓名成绩表 columnMap+get(course)/column(course)

for (String str : courses) {

Map rowMap2 = tables.column(str);

Set> setEntry2 = rowMap2.entrySet();

for (Entry entry : setEntry2) {

System.out.println(entry.getKey() + " " + entry.getValue());

}

}

输出结果为:

d 70

b 90

c 100

a 80

Demo1

public class Demo08 {

public static void main(String[] args) {

//新建一个table对象,并存入数据

Table tables=HashBasedTable.create();

tables.put("a", "javase", 80);

tables.put("b", "javaee", 90);

tables.put("c", "javame", 100);

tables.put("d", "guava", 70);

System.out.println("---------------------------按学生查看成绩---------------------------");

System.out.print("学生\t");

//得到所有课程

Set courses=tables.columnKeySet();

for(String str:courses){

System.out.print(str+"\t");

}

System.out.println();

//得到所有学生

Set stus=tables.rowKeySet();

for(String str:stus){

System.out.print(str+"\t");

//课程成绩表

Map scores=tables.row(str);

for(String c:courses){

//输出成绩

System.out.print(scores.get(c)+"\t");

}

System.out.println();

}

System.out.println("---------------------------按课程查看成绩---------------------------");

System.out.print("课程\t");

//得到所有学生

Set stus2=tables.rowKeySet();

for(String str:stus2){

System.out.print(str+"\t");

}

System.out.println();

//得到所有课程

Set courses2=tables.columnKeySet();

for(String str:courses2){

System.out.print(str+"\t");

//得到学生成绩表

Map map=tables.column(str);

for(String stu:stus2){

//输出成绩

System.out.print(map.get(stu)+"\t");

}

System.out.println();

}

System.out.println("---------------------------转换---------------------------");

//将列调换,由学生-课程-成绩表变为 课程-学生-成绩

Table tables2=Tables.transpose(tables);

// 得到所有行数据

Set> cells2 = tables2.cellSet();

for (Cell temp : cells2) {

System.out.println(temp.getRowKey() + " " + temp.getColumnKey()+ " " + temp.getValue());

}

}

}

Demo2

package HashBasedTable;

import java.util.*;

import com.google.common.collect.HashBasedTable;

import com.google.common.collect.Lists;

import com.google.common.collect.Maps;

import com.google.common.collect.Table;

/**

* Created by Administrator on 2018/5/9.

*/

public class Demo01 {

public static void main(String[] args) {

Table table = HashBasedTable.create();

table.put("0010", "i", 1);

table.put("0010", "e", 2);

table.put("0020", "c", 2);

Set columnKeySet = table.columnKeySet();

Set

> cellSet = table.cellSet();

Map column = table.column("e");

Map row = table.row("0010");

Map> rowMap = table.rowMap();

Set rowKeySet = table.rowKeySet();//获取行的值到一个set集合中

List> list = new ArrayList();

int i = 0;

for (String r : rowKeySet) {

Map map = new HashMap();

map = table.row(r);

list.add(i, map);

i++;

}

for (int j = 0; j < list.size(); j++) {

for (String m : list.get(j).keySet()) {

System.out.print(m + " " + list.get(j).get(m));

}

System.out.println();

}

}

}

java hashbasedtable_Guava类库学习--Table(双键的Map)相关推荐

  1. Guava类库学习--Table(双键的Map)等

    三键Map(有两个key一个value的map): 一般系统中会用到很多字典数据,比如: pass:已审核,unaudited:未审核,reject:审核驳回,业务上这属于一种字典类型数据,这种类型就 ...

  2. com.google.common.collect.Table 双键的Map

    com.google.common.collect.Table 存放的数据,以2个键(rowKey+columnKey)一个值的形式,提供了以下方法: cellSet() rowKeySet() co ...

  3. Java常用类库学习总结

    常用类库 包装类 Java中不能定义基本数据类型的对象,为了能将基本数据类型当作对象处理,包装类由此诞生! 概念: 将基本数据类型封装在包装类中,以便把这些基本数据类型转换为对象进行处理 包装类以及所 ...

  4. 【Java开发】2021最新最全的Java开发工程师学习路线

    2021最新最全的Java开发学习路线 阶段一 (夯实基础) 一.Java基础语法 二.Java面向对象编程 三.Java核心类库 四.XML与JSON 五.算法与数据结构 六.数据库 七.JDBC技 ...

  5. 菜鸟学习笔记:Java提升篇2(容器2——Map、Set、迭代器)

    菜鸟学习笔记:Java容器2--Map.Set.迭代器 Map容器 HashMap的使用 Hash表讲解 Map实现 Set容器 HashSet的使用 实现 Iterator迭代器 Map容器 Has ...

  6. Java学习笔记 - 4 Java核心类库

    4 Java 核心类库 4.1 泛型 泛型,即"参数化类型".就是将原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时 ...

  7. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  8. Java面试知识学习(持续更新)

    一.Java基础 1.java语言有什么特点 面向对象(封装,继承,多态): 平台无关性,平台无关性的具体表现在于,Java 是"一次编写,到处运行(Write Once,Run any W ...

  9. Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

    来至于互联网 Office文档的Java处理包 POI [推荐] Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: ...

最新文章

  1. 百年通信史:落后西方半世纪的中国,用 20 年绝地反杀! | 文末送福利
  2. Springboot-mongodb MongoRepository接口 save方法 详解
  3. python time 时钟计时_如何使用Python的timeit计时代码段以测试性能?
  4. OSChina 周一乱弹 —— 抱着漂亮袜子就亲了一口
  5. Django多进程中的查询错乱问题以及mysql gone away问题
  6. HDU 1019 Least Common Multiple
  7. CSS ::selection 选中文字效果
  8. c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...
  9. Linux Netcat command – The swiss army knife of net
  10. 教你一步步实现bibibi弹幕功能。
  11. Win7 SP1 安装python 3.8时,提示 KB2533623 update is required to continue
  12. webp格式是什么?webp格式怎么打开?webp格式怎么转换gif/jpg/png等?
  13. 20省“十四五”5G发展规划全文发布!(限时下载)
  14. java mysql 分区表_mysql分区表
  15. 再深一点:如何给女朋友解释什么是微服务?
  16. 工业互联网:7  项目生命周期管理(1)
  17. 18-19款迈巴赫S400改装原厂3D大柏林之声,天籁之音
  18. 用python求解一元二次方程组
  19. android 隐私文件夹,秘密文件夹 – 隐私保护,隐藏文件夹和文件
  20. Windows10远程桌面无法复制粘贴问题

热门文章

  1. 计算机主机电源线如何跳线,这些装机跳线的小技巧一般人我不告诉他
  2. IntelliJ IDEA生成jar包运行报Error:A JNI error has occurred,please check your installation and try again
  3. 纸质问卷和网络问卷的优劣势
  4. QQ、微信等通讯工具可以用,浏览器确不能上网
  5. 守候在凌晨2点的伤心
  6. 基于LSTM与Transfomer的股票预测模型
  7. 任何类似问题 libstdc++.so.6: version `GLIBCXX_3.4.26’ not found 的一个通用解决方法
  8. Python资源汇总
  9. AEAI EM费用管理系统V1.0.2版本开源发布
  10. Mybatis的choose标签