Приведенный ниже код создаст таблицу с подсчетами, но без отсчетов .
List<Thing> listOfThings = ...;
Table<Owner, Status, Long> table =
listOfThings.stream().collect(
Tables.toTable(
Thing::getOwner, // Row key extractor
Thing::getStatus, // Column key extractor
thing -> 1, // Value converter (a single value counts '1')
(count1, count2) -> count1 + count2, // Value merger (counts add up)
HashBasedTable::create // Table creator
)
);
Чтобы добавить отсутствующие ячейки в таблицу (с нулевыми значениями), вам потребуется дополнительно выполнить итерацию по всем возможным значениям (из Status
и Owner
) и поставить 0-значение, если еще нет значения.Обратите внимание, что, если Owner
не является перечислением, нет тривиального способа получить все его возможные значения.
Или, вместо этого, вместо этого просто проверьте null
s при получении значений изстол.