gpt4 book ai didi

java - 如何使用Java Stream计算蒙版

转载 作者:行者123 更新时间:2023-12-01 09:45:33 29 4
gpt4 key购买 nike

我有这个代码。这里的 map 是Map<Data, Boolean>

int mask = 0;
for (Map.Entry<Data, Boolean> entry : map.entrySet()) {
if (entry.getKey().getValue() > 0 && entry.getValue()) {
mask = mask | (1 << (entry.getKey().getValue() - 1));
}
}
我想使用Java流计算掩码。在这里,我尝试但仅获得过滤器列表。不知道如何在这里计算掩码。
Integer mask = map.entrySet().filter( entry -> entry.getKey().getValue() > 0 && entry.getValue()).?

最佳答案

您可以将条目映射到计算出的值,然后在reduce运算符中应用or:

map.entrySet().stream()
.filter(entry -> entry.getValue() && entry.getKey().getValue() > 0)
.mapToInt(entry -> (1 << (entry.getKey().getValue() - 1)))
.reduce(0, (r, i) -> r | i)

编辑:如果映射为空,则将0作为标识元素添加到reduce操作,使其默认值为0。

Edit2:如注释中所建议,我颠倒了过滤器的顺序,以避免不必要的方法调用

Edit3:如注释中所建议,现在使用 mapToInt

关于java - 如何使用Java Stream计算蒙版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62409590/

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