Поиск по сайту:

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


В Java есть два способа перетасовать массив.

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

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]