웹사이트 검색

Java에서 배열을 섞는 방법


Java에서 배열을 섞는 방법에는 두 가지가 있습니다.

  1. Collections.shuffle() 메서드
  2. 랜덤 클래스

1. Collections 클래스를 사용하여 배열 요소 섞기

배열에서 목록을 만든 다음 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<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 클래스의 배열 요소를 반복하여 임의 인덱스 번호를 생성할 수 있습니다. 그런 다음 현재 인덱스 요소를 임의로 생성된 인덱스 요소로 바꿉니다. 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]