Функция shuffled
Функция shuffled создает и возвращает новую коллекцию
с элементами исходной коллекции, расположенными в случайном порядке.
Исходная коллекция при этом не изменяется. Функция использует
стандартный генератор случайных чисел для перемешивания элементов.
Импорт
import kotlin.collections.shuffled
Синтаксис
fun <T> Array<out T>.shuffled(): List<T>
fun <T> Iterable<T>.shuffled(): List<T>
fun <K, V> Map<out K, V>.shuffled(): List<Pair<K, V>>
fun <T> Sequence<T>.shuffled(): Sequence<T>
Поддерживаемые типы коллекций
Функция shuffled работает со следующими типами коллекций:
Array- массивы любых типовList- неизменяемые спискиMutableList- изменяемые спискиSet- множестваMap- ассоциативные массивы (возвращает список пар ключ-значение)Sequence- последовательности (возвращает последовательность)
Пример
Перемешаем элементы массива чисел:
val numbers = arrayOf(1, 2, 3, 4, 5)
val shuffledNumbers = numbers.shuffled()
println(shuffledNumbers)
Результат выполнения кода (может отличаться из-за случайности):
List<Int> [3, 1, 5, 2, 4]
Пример
Перемешаем элементы списка строк:
val letters = listOf('a', 'b', 'c', 'd', 'e')
val shuffledLetters = letters.shuffled()
println(shuffledLetters)
Результат выполнения кода (может отличаться из-за случайности):
List<Char> ['d', 'a', 'e', 'c', 'b']
Пример
Перемешаем элементы множества:
val set = setOf(10, 20, 30, 40, 50)
val shuffledSet = set.shuffled()
println(shuffledSet)
Результат выполнения кода (может отличаться из-за случайности):
List<Int> [40, 10, 50, 30, 20]
Пример
Перемешаем пары ключ-значение в ассоциативном массиве:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val shuffledMap = map.shuffled()
println(shuffledMap)
Результат выполнения кода (может отличаться из-за случайности):
List<Pair<String, Int>> [(c, 3), (a, 1), (b, 2)]
Пример
Использование собственного генератора случайных чисел:
import kotlin.random.Random
val numbers = listOf(1, 2, 3, 4, 5)
val random = Random(seed = 42)
val shuffledNumbers = numbers.shuffled(random)
println(shuffledNumbers)
Результат выполнения кода (будет одинаковым при одинаковом seed):
List<Int> [4, 2, 1, 3, 5]