Qu'est-ce qui vous incitera à utiliser cette méthode?Collections.shuffle (Liste de liste)
Mise à jour: Je vois le point maintenant. J'aime la raison d'Uri "Shuffling n'est pas un algorithme trivial". C'est tout à fait vrai.
Qu'est-ce qui vous incitera à utiliser cette méthode?Collections.shuffle (Liste de liste)
Mise à jour: Je vois le point maintenant. J'aime la raison d'Uri "Shuffling n'est pas un algorithme trivial". C'est tout à fait vrai.
Il peut y avoir plusieurs raisons que l'on voudrait mélanger aléatoirement une séquence ordonnée d'éléments. Par exemple, un jeu de cartes. Shuffling n'est pas un algorithme trivial, tout comme le tri n'est pas - Il est donc assez commun de nécessiter une fonction de bibliothèque. Quant à savoir pourquoi une liste - évidemment il doit s'agir d'une collection ordonnée, donc pas de collection générale. Seule la liste et ses sous-types sont garantis pour être commandés. La classe Collections ne fournit pas d'opérations pour les tableaux, mais vous pourriez (et probablement, pour les performances) passer une ArrayList à cette méthode.
Um, si vous avez une collection, et que vous voulez mélanger ... il
L'exemple le plus évident serait un jeu de cartes où vous avez des objets représentant des cartes individuelles, et une collection représentant le pont qui vous voulez mélanger. Autre exemple: si vous présentez plusieurs réponses à un utilisateur dans un questionnaire et que vous ne voulez pas qu'il y ait un biais dû à l'ordre des réponses, vous présentez à chaque utilisateur un ensemble de réponses à choisir.
Eh bien, imaginez que vous modélisez un jeu de cartes. Shuffle serait l'une des premières fonctions que vous écrivez.
Chaque fois que vous souhaitez randomiser le contenu d'une collection, vous devez utiliser shuffle.
Quelques idées comment vous pouvez utiliser cette méthode:
+1 pour le dernier paragraphe – jensgram
... en fait l'implémentation est plutôt triviale. Chaque élément obtient un nouvel index, si l'emplacement est déjà occupé, la collection (ou l'itérateur) calcule l'emplacement libre suivant. –
@Andreas_D ne le sous-estimez pas, vous devez faire attention à utiliser un algo dans lequel toutes les permutations sont également probables, donc ce n'est pas complètement trivial - voir http://en.wikipedia.org/wiki/Fisher-Yates_shuffle – Jesper