gpt4 book ai didi

java - 使用 Guava 的 Tables.toTable

转载 作者:搜寻专家 更新时间:2023-11-01 02:19:27 25 4
gpt4 key购买 nike

我有一个列表 Thing持有两个属性:status (枚举)和 owner (另一个对象)。

我想获得 Guava Table<owner, status, Long>通过遍历 ArrayList并对对象进行计数,包括 0 的计数如果某些状态不在列表中,像这样:

[owner1, status1, 2], [owner1, status2, 0], [owner2, status1, 3], [owner2, status2, 2]

如何使用.collect(Tables.toTable())在那种情况下?

最佳答案

下面的代码将创建一个包含计数但没有零计数的表。

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

要将缺失的单元格添加到表中(具有零值),您需要另外遍历所有可能的值(StatusOwner),如果还没有值,则输入 0 值。请注意,如果 Owner 不是枚举,则没有简单的方法来获取其所有可能的值。

或者,不这样做,只需在从表中检索值时检查 null 即可。

关于java - 使用 Guava 的 Tables.toTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444865/

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