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

cellSet()

rowKeySet()

columnKeySet()

values()

以下是以学生课程实例代码:

import java.util.Map;
import java.util.Set;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.google.common.collect.Table.Cell;
import com.google.common.collect.Tables;Table<String,String,Integer> tables = HashBasedTable.create();
//测试数据
tables.put("a", "javase", 80);
tables.put("b", "javase", 90);
tables.put("a", "oracle", 100);
tables.put("c", "oracle", 95);
//所有的行数据
Set<Cell<String,String,Integer>> cells = tables.cellSet();
for(Cell<String,String,Integer> temp:cells){System.out.println(temp.getRowKey()+":"+temp.getColumnKey()+":"+temp.getValue());
}
/*** b:javase:90c:oracle:95a:oracle:100a:javase:80
*/
System.out.println("==========学生查看成绩==============");
System.out.print("学生\t");
//所有的课程
Set<String> cours = tables.columnKeySet();
for(String t:cours){System.out.print(t+"\t");
}
System.out.println();
//所有的学生
Set<String> stus = tables.rowKeySet();
for(String stu:stus){System.out.print(stu+"\t");Map<String,Integer> scores = tables.row(stu);for(String c:cours){System.out.print(scores.get(c)+"\t");}System.out.println();
}
/*** 学生 javase  oracle  b   90  null    c   null    95  a   80  100*/
System.out.println("==========课程查看成绩==============");
System.out.print("课程\t");
//所有的学生
Set<String> stuSet = tables.rowKeySet();
for(String t:stuSet){System.out.print(t+"\t");
}
System.out.println();
//所有的课程
Set<String> courSet = tables.columnKeySet();
for(String c:courSet){System.out.print(c+"\t");Map<String,Integer> scores = tables.column(c);for(String s:stuSet){System.out.print(scores.get(s)+"\t");}System.out.println();
}
/*** 课程     b   c   a   javase  90  null    80  oracle  null    95      100*/System.out.println("===========转换===========");
Table<String,String,Integer> tables2 = Tables.transpose(tables);
//所有的行数据
Set<Cell<String,String,Integer>> cells2 = tables2.cellSet();
for(Cell<String,String,Integer> temp:cells2){System.out.println(temp.getRowKey()+":"+temp.getColumnKey()+":"+temp.getValue());
}
/***  javase:b:90oracle:c:95oracle:a:100*/

com.google.common.collect.Table 双键的Map相关推荐

  1. java hashbasedtable_Guava类库学习--Table(双键的Map)

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

  2. Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil

    Exception in thread "main" java.lang.IncompatibleClassChangeError: Class com.google.common ...

  3. com.google.common.collect.Range 集合计算

    1.构造Range实例必须使用Range中的静态方法,因为Range的构造方法被设置为private,当a > b使,或者当a == b且为(a,b)时会抛出IllegalArgumentExc ...

  4. ClassNotFoundException: org.apache.flink.shaded.guava18.com.google.common.collect.Lists

    如果报了这个错 1.看下你有没有flink.shaded.guava这个依赖,一般是在flink-streaming就有 2.如果你发现你有这个依赖,但是还是报ClassNotFoundExcepti ...

  5. redis存取list<T>,及bug:Failed to serialize object of type: class com.google.common.collect.Lists$Revers

    Redis存取List 实体类必须序列化,对于redis这种nosql数据库,实例化很重要,很多文章也都介绍了必须实例化,在配置redisTemplate时也会配置序列化规则: <bean id ...

  6. com.google.common.collect.FluentIterable.concat

    特此记录一下,此时此刻非常开心,困扰很久的问题终于解决了. 全部报错如下: Caused by: com.google.common.util.concurrent.ExecutionError: j ...

  7. 项目引入 swagger 启动报错处理(An attempt was made to call the method com.google.common.collect.FluentIterable)

    背景介绍 我用的springboot框架,是用maven构建的项目,加入swagger依赖的时候启动的时候报错 报错信息: *************************** APPLICATIO ...

  8. 报错:com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;

    java项目报错:java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/c ...

  9. Package com.google.common.collect

    This package contains generic collection interfaces and implementations, and other utilities for wor ...

最新文章

  1. matlab-等高线图-三维曲线的绘制
  2. docker 自定义网桥
  3. 常用的函数式接口_Consumer接口的默认方法andThen
  4. linux能装ps,在linux上使用ps(转载)
  5. 蓝翔改名变成“技院”了?网友评论炸了:我真的没想歪...
  6. linux 中文交互最好,与linux相交互 - wsdsb的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. iOS ApplePay paymentData 加解密 (待续)
  8. 2022年中级网络工程师备考(网络知识部分)
  9. SharePoint可上传编辑但不能删除的权限设置
  10. 手机开发|USB调试时未弹出授权对话框
  11. mac android studio Waiting for application to come online解决方案
  12. Tuxera NTFS for Mac 2022新版本安装
  13. Linux hook系统调用open/read/write
  14. python恢复手机数据的软件_有什么万能的手机数据恢复软件吗?
  15. UILabel 文字描边详解
  16. LaTex 连字符多篇连续引用
  17. 金指拓客助力实体门店在短视频低成本精准拓客 打造同城私域号
  18. python删除数组特定元素_如何使用python从数组中删除特定元素
  19. app调用root权限,安卓app获取root权限
  20. 韩国何以成为电子竞技强国

热门文章

  1. python写自动脚本下载_如何使用python写自动化脚本?
  2. java call.invoke,关于_call.invoke 时出现错误,呼唤专家
  3. Unity3D 5 官方教程:地形设置
  4. Linux 系统结构详解,看这一篇就够了
  5. Invitation Cards——正反最短路
  6. JavaScript TypeScript学习总结
  7. This dependency was not found: * common/stylus/index.styl in ./src/main.js To install it, you can ru
  8. 用vs2019使用C#连接MySQL创建图书管理系统(1-7)源码集,未优化,未美化
  9. java爬虫之Jsoup入门
  10. rem 苏宁移动端案例