2015-05-18 35 views
1

我有一個這樣的EnumSet:如何在Java中對EnumSet中的元素進行混洗/隨機化?

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

我想內otherFruits洗牌元素。

有沒有任何方法來洗牌/隨機化這個EnumSet中的元素?如果可能,我不想將它轉換爲List。任何人都可以提供一個例子。

我使用的Java 7

回答

4

不,不可能在不轉換爲數組或列表等其他數據類型的情況下執行此操作。內部EnumSet不保留一個順序:它只是存儲使用的枚舉常量的位掩碼。這種方式速度更快,佔用的內存也非常少。

解決你的問題,你可以使用ArrayList

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

我明白了。我將如何有效地與List進行操作?你可以提供一個例子嗎? – AKIWEB

+0

添加了一個示例如何通過列表解決這個問題 –

1

設置沒有修改訂單。您需要將其轉換爲List或其他收集類型。

+0

'TreeSet's和'LinkedHashSet's,例如,確實有一個明確的順序。 –