如何在Java中的EnumSet中随机化/随机化元素?

时间:2015-05-18 04:31:18

标签: java list collections enums set

我有一个像这样的EnumSet:

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

我想在otherFruits内随机播放元素。

有没有办法在这个EnumSet中随机化/随机化元素?如果可能,我不想将其转换为List。任何人都可以提供一个例子。

我使用的是Java 7.

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

设置不具有可修改的订单。您需要将其转换为List或其他类似的集合类型。