我有一个像这样的EnumSet:

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


我想改写otherFruits中的元素。

有什么方法可以对此EnumSet中的元素进行混洗/随机化吗?如果可能的话,我不想将其转换为列表。任何人都可以提供示例。

我正在使用Java 7。

最佳答案

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

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

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

09-05 15:04
查看更多