gpt4 book ai didi

java - Guava 表 : how to iterate over columns when height and width is not known and table is sparse

转载 作者:行者123 更新时间:2023-12-02 03:01:23 27 4
gpt4 key购买 nike

我的 Java 8 代码正在提供一个 Guava 实例 Table<Integer,Integer,Fizzbuzz>其中行键和列键是非负整数 (0+),每个单元格中的值是某些 Fizzbuzz 的实例POJO。

大多数时间 Table将是来自调用 HashBasedTable.create() 的哈希实现,但是情况并不一定总是如此。所以我(真的)需要一个适用于任何 Table 的解决方案子类。

因此,我尝试遍历表的所有行和所有列,而不提前知道有多少行或列。迄今为止我最好的尝试:

for (Integer rowKey : myTable.rowKeySet()) {
int colKey = 0;

Fizzbuzz val;
while ((val = myTable.get(rowKey, colKey)) != null) {

// increment colKey
colKey++;

// do some processing with the 'val' Fizzbuzz...
}

}

虽然效率低下且有点不稳定,但这个工作,除了我的表稀疏有效的事实,这意味着不是每个单元格值/地址(行+列组合)需要填充。很好 null存在。

我已经仔细阅读了 Guava Table 文档和无数的在线示例,但我一生都无法弄清楚当表稀疏(允许空值)时如何正确(且有效!)地对行和列进行范围划分。 有什么想法吗?

最佳答案

您可以使用 rowMap() 获得 Map<R, Map<C,V>> .

您可以迭代此:

table.rowMap().forEach((rowKey, row) -> {
row.forEach((colKey, value) -> {
// Do something for each row key/col key/value.
});
});

(Ofc,你可以在这里使用增强的 for 循环。在我的手机上用 forEach 编写更简洁)。

关于java - Guava 表 : how to iterate over columns when height and width is not known and table is sparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61393291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com