국비교육/국비교육 복습

day17_api.util.collection_Test07 : ArrayList의 정렬 (Collections 클래스 이용)

Luver Duck 2022. 8. 21. 00:08

(Q) 이번 주 로또 예상번호를 추첨하여 출력

- 로또 번호는 1~45까지 숫자가 총 6개

- 단, 번호는 낮은 것부터 나와야 합니다

 

메인 메소드 (1)

- 난수 6개를 생성해서 List에 입력하는 방법

package day17_api.util.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Test07 {

	public static void main(String[] args) {
		
		// List 생성
		List<Integer> list = new ArrayList<>();
		
		// 랜덤 생성
		Random r = new Random();
		
		// 구현
		for(int i = 0 ; i < 6 ; i ++) {
			// 난수 생성
			int numR = r.nextInt(45) + 1;
			
			// List에 입력
			if(list.contains(numR)) {
				i --;
			}
			else {
				list.add(numR);
			}
		}
		
		// 정렬(오름차순)
		Collections.sort(list);
		
		// 출력
		System.out.print("이번주 로또 번호 : ");
		for(int i = 0 ; i < list.size() ; i ++) {
			System.out.print(list.get(i) + " ");
		}
	}
}

 

메인 메소드 (2)

- 1~45의 숫자가 입력된 List를 셔플한 후 앞에서부터 6개를 추출하는 방법

package day17_api.util.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test07_1 {

	public static void main(String[] args) {
		
		// List 생성
		List<Integer> list = new ArrayList<>();
		
		// List에 1부터 45까지 입력
		for(int i = 1 ; i <= 45 ; i ++) {
			list.add(i);
		}
		
		// List 섞기 (Shuffle)
		Collections.shuffle(list);
		
		// 앞에서부터 6개 출력
		System.out.print("이번주 로또 번호 : ");
		for(int i = 0 ; i < 6 ; i ++) {
			System.out.print(list.get(i) + " ");
		}
	}
}

 

- Collections 클래스의 메소드 일부

Collections.sort(List<T> list) List를 오름차순으로 정렬한다 static
Collections.shuffle(List<T> list) List를 랜덤으로 섞는다 static void

(무작위성의 기본 소스를 사용하여 지정된 목록을 무작위로 치환합니다.) ??