Рубрики
Без рубрики

Как перетасовать массив в Java

В Java существует два способа перетасовки массива. Метод Collections.shuffle() Случайный класс 1. Перемешайте элементы массива, используя класс Collections, который мы можем создать

Автор оригинала: Pankaj Kumar.

В Java существует два способа перетасовки массива.

  1. Метод Collections.shuffle()
  2. Случайный Класс

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]