组合 Java EnumSet

发布于 2024-09-18 05:28:41 字数 349 浏览 4 评论 0原文

如果我有一个 Enum,我可以使用方便的 EnumSet 类创建一个 EnumSet

enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
EnumSet<Suit> reds = EnumSet.of(Suit.HEARTS, Suit.DIAMONDS);
EnumSet<Suit> blacks = EnumSet.of(Suit.CLUBS, Suit.SPADES);

给定两个 EnumSet,如何创建一个包含这两个集合的并集的新 EnumSet?

EnumSet<套装>;红与黑=?

If I have an Enum, I can create an EnumSet using the handy EnumSet class

enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
EnumSet<Suit> reds = EnumSet.of(Suit.HEARTS, Suit.DIAMONDS);
EnumSet<Suit> blacks = EnumSet.of(Suit.CLUBS, Suit.SPADES);

Give two EnumSets, how can I create a new EnumSet which contains the union of both of those sets?

EnumSet<Suit> redAndBlack = ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

↙温凉少女 2024-09-25 05:28:41

EnumSet 也是一个集合,因此您也可以使用许多 Collection API 调用,例如 addAll。

EnumSet<Suit> redAndBlack = EnumSet.copyOf(reds);
redAndBlack.addAll(blacks);

An EnumSet is also a collection, so you can use many of the Collection API calls as well, such as addAll.

EnumSet<Suit> redAndBlack = EnumSet.copyOf(reds);
redAndBlack.addAll(blacks);
时光倒影 2024-09-25 05:28:41

在这种情况下,您还可以使用

EnumSet<Suit> redAndBlack = EnumSet.allOf(Suit.class)

In this case, you could also use

EnumSet<Suit> redAndBlack = EnumSet.allOf(Suit.class)
三生一梦 2024-09-25 05:28:41

以下是提取到泛型中的答案,您可以将其与任意两个 EnumSet 一起使用来合并它们。

private <T extends Enum<T>> EnumSet<T> mergeEnumSet(EnumSet<T> a, EnumSet<T> b) {
    final EnumSet<T> union = EnumSet.copyOf(a);
    union.addAll(b);
    return union;
}

Here's the answer extracted into a generic that you can use with any two EnumSet<T>'s to merge them.

private <T extends Enum<T>> EnumSet<T> mergeEnumSet(EnumSet<T> a, EnumSet<T> b) {
    final EnumSet<T> union = EnumSet.copyOf(a);
    union.addAll(b);
    return union;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文