Что побудит использовать этот метод?
Обновление: теперь я вижу смысл. Мне нравится причина Ури: «Перетасовка - не тривиальный алгоритм». Это совершенно верно.
Что побудит использовать этот метод?
Обновление: теперь я вижу смысл. Мне нравится причина Ури: «Перетасовка - не тривиальный алгоритм». Это совершенно верно.
Может быть много причин, по которым вы хотели бы случайным образом перетасовать упорядоченную последовательность элементов. Например, колода карт.
Перетасовка не является тривиальным алгоритмом, как и сортировка. Поэтому она достаточно распространена, чтобы потребовать библиотечной функции.
Что касается списка - очевидно, это должна быть упорядоченная коллекция, а не какая-либо общая коллекция. Только список и его подтипы гарантированно упорядочены. Класс Collections не предоставляет операций для массивов, но вы можете (и, вероятно, должны для повышения производительности) передать ArrayList в этот метод.
Эм, если у вас есть коллекция, и вы хотите ее перетасовать...
Наиболее очевидным примером может быть карточная игра, в которой у вас есть объекты, представляющие отдельные карты, и коллекция, представляющая колоду, которую вы хотите перетасовать.
Другой пример может быть, если вы представляете пользователю несколько ответов в анкете, и вы не хотите, чтобы было какое-либо предвзятое отношение из-за порядка ответов, поэтому вы предоставляете каждому пользователю перемешанный набор ответов на выбор. .
Итак, представьте, что вы моделируете колоду карт. Shuffle будет одной из первых функций, которые вы напишете.
В любое время, когда вы хотите рандомизировать содержимое коллекции, вы должны использовать перемешивание.
Некоторые идеи, как вы могли бы использовать этот метод: