我有一个像这样的EnumSet:
EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT);
我想改写
otherFruits
中的元素。有什么方法可以对此EnumSet中的元素进行混洗/随机化吗?如果可能的话,我不想将其转换为列表。任何人都可以提供示例。
我正在使用Java 7。
最佳答案
不,如果不转换为其他数据类型(如数组或列表),则无法执行此操作。在内部,EnumSet
不会保留顺序:它仅存储使用的枚举常量的位掩码。这样,它速度更快,并且占用的内存非常少。
要解决您的问题,您可以使用ArrayList
:
List<Fruit> fruits = new ArrayList<>(otherFruits);
Collections.shuffle(fruits);