Java에서 배열을 섞는 방법
Java에서 배열을 섞는 방법에는 두 가지가 있습니다.
- Collections.shuffle() 메서드
- 랜덤 클래스
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]