Print all keys and value for HashBasedTable in Google Guava
guava, java
Solution
Im not Guava user so this may be overkill (if it is true then will be glad for any info) but you can use `table.rowMap()` to get `Map<String, Map<String, Integer>>` which will represents data in table in form `{A={B=1, C=2}, B={D=3}}`. Then just iterate over this map like:
Map<String, Map<String, Integer>> map = table.rowMap();
for (String row : map.keySet()) {
Map<String, Integer> tmp = map.get(row);
for (Map.Entry<String, Integer> pair : tmp.entrySet()) {
System.out.println(row+" "+pair.getKey()+" "+pair.getValue());
}
}
or
for (Map.Entry<String, Map<String,Integer>> outer : map.entrySet()) {
for (Map.Entry<String, Integer> inner : outer.getValue().entrySet()) {
System.out.println(outer.getKey()+" "+inner.getKey()+" "+inner.getValue());
}
}
or even better using `com.google.common.collect.Table.Cell`
for (Cell<String, String, Integer> cell: table.cellSet()){
System.out.println(cell.getRowKey()+" "+cell.getColumnKey()+" "+cell.getValue());
}
Problem
I create and populate a Guava `Table` using the following code: ``` Table<String, String, Integer> table = HashBasedTable.create(); table.put("A", "B", 1); table.put("A", "C", 2); table.put("B", "D", 3); ``` I wonder how to iterate over table and print out both keys and value for each row? So, the desired output is: ``` A B 1 A C 2 B D 3 ```