java.util.stream.Collectors with EnumSet Stream



我试图用下面的代码代替位掩码

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,该 lambda 应创建一个空集合来存储结果。在这里,我们使用EnumSet.noneOf调用创建空EnumSet。请注意,对于EnumSet,您必须始终(隐式或显式)指定此设置的枚举。

相关内容

  • 没有找到相关文章

最新更新