16

如果我有一个 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<Suit> redAndBlack = ?

4

3 回答 3

25

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

EnumSet<Suit> redAndBlack = EnumSet.copyOf(reds);
redAndBlack.addAll(blacks);
于 2010-09-07T11:38:01.013 回答
3

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

EnumSet<Suit> redAndBlack = EnumSet.allOf(Suit.class)
于 2012-08-24T15:14:07.543 回答
2

这是提取到通用中的答案,您可以将其与任何两个EnumSet<T>'s 一起使用来合并它们。

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;
}
于 2021-04-26T17:58:38.387 回答