在Google Guava中打印HashBasedTable的所有键和值

时间:2013-11-30 16:12:09

标签: java guava

我使用以下代码创建并填充Guava Table

Table<String, String, Integer> table = HashBasedTable.create();
table.put("A", "B", 1);
table.put("A", "C", 2);
table.put("B", "D", 3);

我想知道如何遍历表并打印每行的键和值?因此,所需的输出是:

A B 1
A C 2
B D 3

2 个答案:

答案 0 :(得分:24)

我不是Guava用户,所以这可能是矫枉过正(如果确实如此,那么任何信息都会很高兴)但你可以使用table.rowMap()获取Map<String, Map<String, Integer>>,它将代表表格中的数据{ {1}}。然后迭代这个地图,如:

{A={B=1, C=2}, B={D=3}}

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());
    }
}

甚至更好地使用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()); } }

com.google.common.collect.Table.Cell

答案 1 :(得分:1)

您可以使用:

System.out.println(Arrays.asList(table));

,输出将为

[{A={B=1, C=2}, B={D=3}}]