如何 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);
我有一个像这样的 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);