案例一:学生成绩表格的行和列转换

 1 package com.bjsxt.others.guava;
 2
 3 import java.util.Map;
 4 import java.util.Set;
 5
 6 import com.google.common.collect.HashBasedTable;
 7 import com.google.common.collect.Table;
 8 import com.google.common.collect.Tables;
 9 import com.google.common.collect.Table.Cell;
10
11 /**
12  * 双键的Map --> Table -->rowKey+columnKey+value
13  * 1、方法
14  *   所有的行数据:cellSet()
15  *   所有的学生:rowKeySet()
16  *   所有的课程:columnKeySet()
17  *   所有的成绩:values()
18  *   学生对应的课程:rowMap() + get(学生)
19  *                    row(学生)
20  *   课程对应的学生:columnMap + get(课程)
21  *                     column(课程)
22  *
23  */
24 public class Demo08 {
25     public static void main(String[] args) {
26         Table<String,String,Integer> tables = HashBasedTable.create();
27         //测试数据
28         tables.put("a","javase",80);
29         tables.put("b","javase",90);
30         tables.put("a", "oracle", 100);
31         tables.put("c", "oracle", 95);
32
33         //所有的行数据
34         Set<Cell<String,String,Integer>> cells = tables.cellSet();
35         for(Cell<String,String,Integer> temp:cells) {
36             System.out.println(temp.getRowKey()+"-->"+temp.getColumnKey()+"-->"+temp.getValue());
37         }
38
39         System.out.println("=============学生查看成绩=====================");
40         System.out.print("学生\t");
41         //所有的课程
42         Set<String> cours = tables.columnKeySet();
43         for(String t:cours) {
44             System.out.print(t+"\t");
45         }
46         System.out.println();
47         //所有的学生
48         Set<String> stus = tables.rowKeySet();
49         for(String stu:stus) {
50             System.out.print(stu+"\t");
51             Map<String,Integer> scores = tables.row(stu);
52             for(String c:cours) {
53                 System.out.print(scores.get(c)+"\t");
54             }
55             System.out.println();
56         }
57
58         System.out.println("=============课程查看成绩=====================");
59         System.out.print("课程\t");
60         //所有的学生
61         Set<String> stuSet = tables.rowKeySet();
62         for(String t:stuSet) {
63             System.out.print(t+"\t");
64         }
65         System.out.println();
66         //所有的课程
67         Set<String> courseSet = tables.columnKeySet();
68         for(String c:courseSet) {
69             System.out.print(c+"\t");
70             Map<String,Integer> scores = tables.column(c);
71             for(String s:stuSet) {
72                 System.out.print(scores.get(s)+"\t");
73             }
74             System.out.println();
75         }
76         System.out.println("===========转换==============");
77         Table<String,String,Integer> tables2 = Tables.transpose(tables);
78         //所有的行数据
79         Set<Cell<String,String,Integer>> cells2 = tables2.cellSet();
80         for(Cell<String,String,Integer> temp:cells2) {
81             System.out.println(temp.getRowKey()+"-->"+temp.getColumnKey()+"-->"+temp.getValue());
82         }
83
84     }
85 }

运行结果:

a-->javase-->80
a-->oracle-->100
b-->javase-->90
c-->oracle-->95
=============学生查看成绩=====================
学生    javase    oracle
a    80    100
b    90    null
c    null    95
=============课程查看成绩=====================
课程    a    b    c
javase    80    90    null
oracle    100    null    95
===========转换==============
javase-->a-->80
oracle-->a-->100
javase-->b-->90
oracle-->c-->95

转载于:https://www.cnblogs.com/swimminglover/p/8367682.html

Table——高淇JAVA300讲笔记之Guava相关推荐

  1. commons的Predicate和Transformer——高淇JAVA300讲笔记之commons

    案例一:Predicate 断言 1 package com.bjsxt.others.commons; 2 3 import java.util.ArrayList; 4 import java.u ...

  2. 【133天】尚学堂高淇Java300集视频精华笔记(71-72)

    第71集:常用类/file类/打印目录树状结构/递归算法 课堂代码 package com.test071;import java.io.File;public class Test071 {publ ...

  3. 【138天】尚学堂高淇Java300集视频精华笔记(84)

    第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...

  4. 【135天】尚学堂高淇Java300集视频精华笔记(74-76)

    第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...

  5. 【131天】尚学堂高淇Java300集视频精华笔记(65-66)

    第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...

  6. 【147天】尚学堂高淇Java300集视频精华笔记(108-109)

    第108集:容器equals和hashcodeJDK源代码分析 本集知识点 Java中规定,若两个对象equals比较后内容相等(为true),则hashCode必须相等,反之不然.[原因见内存分析图 ...

  7. 【153天】尚学堂高淇Java300集视频精华笔记(122-123)

    叨叨两句(2017.7.8) 我现在发现我太适合当程序员了,稍微懂点知识后想法就一堆一堆的,哈哈. 今天敲下面这个冒泡排序时感觉太特么好了.原来学编程最快乐的事情就是懂了一些知识后,把它变成可以在电脑 ...

  8. java高淇_高淇java300集JAVA常用类作业

    一.选择题 1. 以下选项中关于int和Integer的说法错误的是( B D).(选择二项) A.int是基本数据类型,Integer是int的包装类,是引用数据类型 B.int的默认值是0,Int ...

  9. Linux高并发服务器开发---笔记1(环境搭建、系统编程、多进程)

    0613 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.1.1 项目介绍 4.1.2 开发环境搭建 ①安装Linux系统.XSHELL.XFTP.Visual Stu ...

最新文章

  1. EntityFramework Code-First 简易教程(三)-------数据库初始化
  2. [补档][中山市选2011]杀人游戏
  3. 我在富士康挨踢了七年(八.出国Support)
  4. java并发排序_Java并发(三):重排序
  5. 程序员求职的六大禁忌,你中招了吗?
  6. python入门--字符串,切片
  7. mysql数据库连接地址utf8_在Python中连接到MySQL数据库时UTF8不工作
  8. C程序员要学C++吗?
  9. mysql 查询 投影,MySql-连接查询
  10. Windows Store App 图像
  11. 计算机应用word作业,《计算机应用基础》作业
  12. [转]Kali-linux安装之后的简单设置
  13. linux 查看http连接等
  14. python交通调查数据处理_python数据分析--关于时间类型数据处理的一种方法
  15. 即时语音提示软件php,即时语音提示校对工具
  16. request.getParameter()与request.getParameterValues()
  17. Linux 网页挂马实验,网页挂马常见漏洞分析与检测
  18. 微信小程序:凑单满减计算神器
  19. 微信小程序用地理编码做地图标注
  20. WinMerge 过滤器的使用方法

热门文章

  1. python编程从入门到实践答案-《Python编程:从入门到实践》第五章 if语句 习题答案...
  2. python读数据-如何用Python读取开放数据?
  3. python表白对话框-python tkinter-消息框、对话框、文件对话框
  4. python3-Python3.7.0官方版
  5. python3最新版本-Python3第三方组件最新版本追踪实现
  6. python多久学会自学-零基础自学Python多久可以找工作?
  7. python游戏编程入门书籍推荐-Python游戏编程入门3
  8. python3.8.5怎么用-Python 3.8 新功能大揭秘【新手必学】
  9. 脚本编程语言python语言-python语言是脚本语言吗
  10. python循环语句-python循环语句