番石榴表:当高度和宽度未知且表稀疏时如何在列上进行迭代

问题描述 投票:0回答:1

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

Most的时间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...
    }

}

虽然效率低下,而且有些奇怪,但这[[would的工作,除了对我的表有效的事实是sparse,这意味着并非每个单元格值/地址(行+ col组合)都需要被填充。存在null的罚款。

我已经遍历了Guava Table文档和无数的在线示例,对于我来说,我无法弄清楚当表稀疏时(允许为空)如何正确地(有效地!)遍历行和列。

任何想法?

java iteration guava
1个回答
0
投票
您可以使用rowMap()获得rowMap()

您可以对此进行迭代:

© www.soinside.com 2019 - 2024. All rights reserved.