gpt4 book ai didi

java.util.stream.Collectors 与 EnumSet 流

转载 作者:IT老高 更新时间:2023-10-28 21:11:35 31 4
gpt4 key购买 nike

我正在尝试使用下面的位掩码代替代码

public static Set<Amenities> fromBitFlags(int bitFlag) {
return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0).collect(Collectors.toSet());
}

我想返回 EnumSet 而不是一个普通的集合(不想因为强制转换而放弃 EnumSet 的用处)。

需要一些关于如何创建自定义收集器来收集 EnumSet 的说明。

最佳答案

您可以使用 toCollection(Supplier) :

return ALL_OPTS.stream().filter(a -> (a.ameityId & bitFlag) > 0)
.collect(Collectors.toCollection(() -> EnumSet.noneOf(Amenities.class)));

toCollection 方法接收一个 lambda,它应该创建一个空集合来存储结果。在这里,我们使用 EnumSet.noneOf 调用创建空的 EnumSet。请注意,对于 EnumSet,您必须始终(隐式或显式)指定此集合用于哪个枚举。

关于java.util.stream.Collectors 与 EnumSet 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178294/

31 4 0