Мой 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 и бесчисленные онлайн-примеры, и я не могу понять, как правильно (и эффективно!) Выбирать диапазон. по строкам и столбцам, когда таблица разрежена (допускает нулевые значения). Есть идеи?