结合Java EnumSets

时间:2010-09-07 11:34:35

标签: java enumset

如果我有一个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);

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

EnumSet<Suit> redAndBlack = ?

3 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

这是提取到泛型中的答案,您可以将其与任意两个 EnumSet<T> 结合使用以合并它们。

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;
}