Как перетасовать массив в Java
В Java есть два способа перетасовать массив.
- Метод Collections.shuffle()
- Случайный класс
1. Перетасовка элементов массива с использованием класса коллекций
Мы можем создать список из массива, а затем использовать метод shuffle() класса Collections для перемешивания его элементов. Затем преобразуйте список в исходный массив.
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<Integer> 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. Перетасовать массив с использованием класса Random
Мы можем перебирать элементы массива в классе Random, чтобы сгенерировать случайный номер индекса. Затем замените текущий элемент индекса случайно сгенерированным элементом индекса. В конце цикла 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]