Table——高淇JAVA300讲笔记之Guava

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

 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

 

posted on 2018-01-27 23:59  爱游泳的小飞象  阅读(226)  评论(0编辑  收藏  举报

导航