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 ```

Original source