2009-06-09 7 views
18

Existe-t-il un type de collection Java dont l'ordre de récupération est aléatoire? Par exemple, je mets l'entier 1, 2, 3 dans la collection et quand j'essaye de les imprimer tout le résultat peut être "1 2 3", "3 2 1" ou "1 3 2"?Collection aléatoire Java

Répondre

43

Si vous voulez juste une séquence aléatoire, vous pouvez utiliser Collections.shuffle

List<Integer> list = new LinkedList(); 
    //Add elements to list 
    Collections.shuffle(list); 
+5

Ceci est un cas où vous pourriez vouloir utiliser 'ArrayList' - à partir de la description de l'algorithme que vous voulez un accès aléatoire rapide. –

5

Prenez une collection normale et mélangez-la, puis passez dessus de manière normale. Vous pouvez utiliser java.util.Collections.shuffle(List<T>) pour effectuer la réorganisation.

+1

Eh bien, votre première réponse m'a troublé parce que je ne connais pas les java.util.Collections. Je suis un homme frais, vous savez. – Sefler

2

Juste shuffle la collection. Si la collection doit rester rester dans l'ordre, vous pouvez accéder à des éléments au hasard indices, mais alors vous devez garder la trace de ceux que vous avez utilisés auparavant (peut-être, cela dépend de votre application), et cela peut être très inefficace. Une meilleure solution, si la mémoire n'est pas un obstacle, serait simplement de faire une copie et de mélanger cela.

1

Pas que je sache. Vous pouvez toujours placer les valeurs dans une liste et utiliser Collections.shuffle pour placer les valeurs dans un ordre aléatoire.

Questions connexes