【问题标题】:In Google Guava (Java), how to bulk set values for ArrayTable?在 Google Guava (Java) 中,如何批量设置 ArrayTable 的值?
【发布时间】:2014-02-07 12:40:05
【问题描述】:

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

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

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

请指教。

【问题讨论】:

  • 行键和列键是什么?数组中的索引?您只需要 2 个嵌套循环。我怀疑番石榴有什么可以帮助你的。
  • @JBNizet:方法V set(int rowIndex, int columnIndex, V value)证明了为ArrayTable设置值不需要行列键。

标签: java guava


【解决方案1】:

没有这样的构造函数。

您最好的选择是:

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

【讨论】:

    【解决方案2】:

    正如@JBNizet 所说,番石榴没有任何帮助,因为库不知道您想将什么用作键。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      相关资源
      最近更新 更多