package guava只读函数式编程过滤转换约束集合;
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;
/**
- 双键的Map–>Table rowKey行键+columnkey列键
- 如表格: 学生A(key) java课程(key) 成绩80分(值values)
-
学生B(key) java课程(key) 成绩90分(值values)
-
1.方法
-
所有的行数据:cellSet()
-
所有的学生:rowKeySet()不可重复
-
所有的课程:columnkeSet()可重复
-
所有的成绩:values()可重复
-
学生对应的课程:RowKey()+get(学生)或者使用row(学生)
-
课程对应的学生:columnkey+get(课程)或者column(课程)
*/
public class Demo08 {
public static void main(String[] args) {
Table<String, String,Integer> tables = HashBasedTable.create();//create创造
//测试数据
tables.put(“张三”, “英语”, 80);
tables.put(“李四”, “英语”, 85);
tables.put(“王五”, “语文”, 90);
tables.put(“赵强”, “语文”, 100);
//查看所有的行数据
Set<Cell<String,String,Integer>> cells = tables.cellSet();
//使用增强for循环或者迭代器
for(Cell<String,String,Integer> temp:cells){
System.out.println(temp.getRowKey()+"–>"+temp.getColumnKey()+"–>"+temp.getValue());
}
System.out.println(“通过学生查看每门课成绩=================”);
//学生 + 课程+课程 即学生对应课程
System.out.print(“学生\t”);
Set cours = tables.columnKeySet();
for(String temp:cours){
System.out.print(temp+"\t");
}
System.out.println();
//每一个学生每一门课即学生对应成绩
Set stus = tables.rowKeySet();
for(String s:stus){
System.out.print(s+"\t");
//对应的课程 这里使用row(学生)
Map<String, Integer> scores = tables.row(s);//s返回的是Map;scores考试成绩
for(String c:cours){
System.out.print(scores.get©+"\t");
}
System.out.println();
}
System.out.println(“通过课程查看学生成绩=================”);
System.out.print(“课程\t”);
//所有的学生
Set student = tables.rowKeySet();//student学生
for(String temp:student){
System.out.print(temp+"\t");
}
System.out.println();
//所有的课程
Set course = tables.columnKeySet();//course课程
for(String c:course){
System.out.print(c+"\t");
//对应的课程 这里使用row(学生)
Map<String, Integer> scores = tables.column©;//s返回的是Map;scores考试成绩
for(String s:student){
System.out.print(scores.get(s)+"\t");
}
System.out.println();
}
System.out.println(“转换成另一种表格与最上面格式互换=================”);
Table<String, String,Integer> tables1 = Tables.transpose(tables);//tables表格
//查看所有的行数据
Set<Cell<String,String,Integer>> cells1 = tables1.cellSet();
//使用增强for循环或者迭代器
for(Cell<String,String,Integer> temp:cells1){
System.out.println(temp.getRowKey()+"–>"+temp.getColumnKey()+"–>"+temp.getValue());
}
}
}
//结果-------------------------------------------------------
李四–>英语–>85
张三–>英语–>80
赵强–>语文–>100
王五–>语文–>90
通过学生查看每门课成绩=================
学生 英语 语文
李四 85 null
张三 80 null
赵强 null 100
王五 null 90
通过课程查看学生成绩=================
课程 李四 张三 赵强 王五
英语 85 80 null null
语文 null null 100 90
转换成另一种表格与最上面格式互换======
英语–>李四–>85
英语–>张三–>80
语文–>赵强–>100
语文–>王五–>90