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:90
c:oracle:95
a:oracle:100
a: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:90
oracle:c:95
oracle:a:100
*/