Автор оригинала: Pankaj Kumar.
В Java существует два способа перетасовки массива.
- Метод Collections.shuffle()
- Случайный Класс
1. Перемешайте элементы массива с помощью класса Collections
Мы можем создать список из массива, а затем использовать метод класса коллекций shuffle() для перемешивания его элементов. Затем преобразуйте список в исходный массив.
package com.journaldev.examples;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ShuffleArray {
public static void main(String[] args) {
Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7 };
List intList = Arrays.asList(intArray);
Collections.shuffle(intList);
intList.toArray(intArray);
System.out.println(Arrays.toString(intArray));
}
}
Выход: [1, 7, 5, 2, 3, 6, 4]
Обратите внимание, что функция Arrays.asList() работает только с массивом объектов. Концепция автобоксинга не работает с дженериками . Таким образом, вы не можете использовать этот способ для перетасовки массива для примитивов.
2. Перемешайте массив с помощью случайного класса
Мы можем перебирать элементы массива в цикле for . Затем мы используем случайный класс для генерации случайного номера индекса. Затем поменяйте текущий элемент индекса на случайно сгенерированный элемент индекса. В конце цикла for у нас будет случайно перетасованный массив.
package com.journaldev.examples;
import java.util.Arrays;
import java.util.Random;
public class ShuffleArray {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5, 6, 7 };
Random rand = new Random();
for (int i = 0; i < array.length; i++) {
int randomIndexToSwap = rand.nextInt(array.length);
int temp = array[randomIndexToSwap];
array[randomIndexToSwap] = array[i];
array[i] = temp;
}
System.out.println(Arrays.toString(array));
}
}
Выход: [2, 4, 5, 1, 7, 3, 6]