在Google Guava(Java)中,如何批量设置ArrayTable的值?

时间:2014-02-07 12:40:05

标签: java guava

我有一个二维数据数组,例如V[][],我想在ArrayTable个实例上批量设置。

我必须反复拨打ArrayTable.put(R rowKey, C columnKey, V value)吗?

我找不到合适的构造函数/静态创建助手或方法,例如putAll(V[][] valueArr)

请告知。

2 个答案:

答案 0 :(得分:2)

没有这样的构造函数。

您最好的选择是:

ArrayTable table = ArrayTable.create(
    ContiguousSet.create(Range.closedOpen(0, v.length), 
                       DiscreteDomain.integers()), 
    ContiguousSet.create(Range.closedOpen(0, v[0].length), 
                       DiscreteDomain.integers()));
for(int i = 0 ; i < v.length ; ++i) {
    for(int j = 0 ; j < v[i].length ; ++j) {
        table.set(i, j, v[i][j]);
    }
}

答案 1 :(得分:0)

@ jBNizet说,番石榴没有任何帮助,因为图书馆不知道你想用什么作为钥匙。

您可以使用@JBNizet说的2个嵌套循环,或者您可以创建自己的Table实现来包装您的数组,然后调用putAll方法将您的新表复制到ArrayTable。

您不需要在Table上实现每个方法,您可能会对应该改变内容的方法抛出UnsupportedOperationException。