我有一個這樣的EnumSet:如何在Java中對EnumSet中的元素進行混洗/隨機化?
EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT);
我想內otherFruits
洗牌元素。
有沒有任何方法來洗牌/隨機化這個EnumSet中的元素?如果可能,我不想將它轉換爲List。任何人都可以提供一個例子。
我使用的Java 7
我有一個這樣的EnumSet:如何在Java中對EnumSet中的元素進行混洗/隨機化?
EnumSet<Fruit> otherFruits = EnumSet.complementOf(CURRENT_FRUIT);
我想內otherFruits
洗牌元素。
有沒有任何方法來洗牌/隨機化這個EnumSet中的元素?如果可能,我不想將它轉換爲List。任何人都可以提供一個例子。
我使用的Java 7
不,不可能在不轉換爲數組或列表等其他數據類型的情況下執行此操作。內部EnumSet
不保留一個順序:它只是存儲使用的枚舉常量的位掩碼。這種方式速度更快,佔用的內存也非常少。
解決你的問題,你可以使用ArrayList
:
List<Fruit> fruits = new ArrayList<>(otherFruits);
Collections.shuffle(fruits);
設置沒有修改訂單。您需要將其轉換爲List
或其他收集類型。
'TreeSet's和'LinkedHashSet's,例如,確實有一個明確的順序。 –
我明白了。我將如何有效地與List進行操作?你可以提供一個例子嗎? – AKIWEB
添加了一個示例如何通過列表解決這個問題 –