如何在Java中洗牌/随机化枚举集中的元素?
我有这样一个枚举集:如何在Java中洗牌/随机化枚举集中的元素?,java,list,collections,enums,set,Java,List,Collections,Enums,Set,我有这样一个枚举集: EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT); EnumSet otherFruits=EnumSet.complementOf(当前水果); 我想洗牌otherFruits中的元素 是否有任何方法可以在此枚举集中洗牌/随机化元素?如果可能的话,我不想把它转换成列表。谁也能举个例子 我正在使用Java 7。集合没有可修改的顺序。您需要将其转换为列表或其他集合类型。集合没有可修
EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT);
EnumSet otherFruits=EnumSet.complementOf(当前水果);
我想洗牌otherFruits
中的元素
是否有任何方法可以在此枚举集中洗牌/随机化元素?如果可能的话,我不想把它转换成列表。谁也能举个例子
我正在使用Java 7。集合没有可修改的顺序。您需要将其转换为
列表
或其他集合类型。集合没有可修改的顺序。您需要将其转换为列表
或其他收集类型。否,如果不转换为其他数据类型(如数组或列表),则无法执行此操作。内部EnumSet
不保留顺序:它只存储所用枚举常量的位掩码。这样速度更快,占用的内存量也很低
要解决您的问题,您可以使用ArrayList
:
List<Fruit> fruits = new ArrayList<>(otherFruits);
Collections.shuffle(fruits);
列出水果=新的ArrayList(其他水果);
收藏。洗牌(水果);
不,如果不转换为其他数据类型(如数组或列表),则无法执行此操作。内部EnumSet
不保留顺序:它只存储所用枚举常量的位掩码。这样速度更快,占用的内存量也很低
要解决您的问题,您可以使用ArrayList
:
List<Fruit> fruits = new ArrayList<>(otherFruits);
Collections.shuffle(fruits);
列出水果=新的ArrayList(其他水果);
收藏。洗牌(水果);
我明白了。那么,我将如何有效地使用列表执行此操作?如果可能的话,你能举个例子吗?我明白了。那么,我将如何有效地使用列表执行此操作?如果可能,您可以提供一个示例吗?TreeSet
s和LinkedHashSet
s确实有一个定义良好的顺序。例如TreeSet
s和LinkedHashSet
s确实有一个定义良好的顺序。