如何 Java 中的 EnumSet 中的 shuffle/randomize 个元素?

How to shuffle/randomize elements within EnumSet in Java?

我有一个像这样的 EnumSet:

EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT);

我想随机播放 otherFruits 中的元素。

有什么方法可以在这个 EnumSet 中 shuffle/randomize 个元素吗?如果可能,我不想将它转换为 List。谁也可以举个例子。

我正在使用 Java 7.

集合没有可修改的顺序。您需要将其转换为 List 或其他可以转换的集合类型。

不,如果不转换为另一种数据类型(如数组或列表),则无法执行此操作。在内部 EnumSet 不保留顺序:它只存储使用过的枚举常量的位掩码。这样它会更快并且占用的内存量非常少。

要解决您的问题,您可以使用 ArrayList:

List<Fruit> fruits = new ArrayList<>(otherFruits);
Collections.shuffle(fruits);