자바 공부 기록(16)-HashSet 예제 , 잘 섞이지 않는 배열 ArrayList에 옮겨 담기
my code archive
반응형

자바의 정석 11-10 예제 ) 숫자들의 위치가 잘 섞이지 않는 문제 이유와 해결하기

import java.util.*;

public class Exercise11_10 {

	public static void main(String[] args) {
		Set set=new HashSet();
		int[][] board=new int[5][5];
		
		for(int i=0;set.size()<25;i++) {
			set.add((int)(Math.random()*30)+1+"");
		}
        
		Iterator it=set.iterator();
		
		for(int i=0;i<board.length;i++) {
			for(int j=0;j<board[i].length;j++) {
				board[i][j]=Integer.parseInt((String)it.next());
				System.out.print((board[i][j]<10?"":"")+board[i][j]);
			}
			System.out.println();
		}

	}

}
정답

HashSet의 특징은 -> 순서를 유지하지 않고, 중복을 허용하지 않는다는 것.

이 문제를 해결하기 위해서는?

순서 유지가 필요하다.

=> Set을 List로 옮기고 List를 정렬하면 된다.

 

ArrayList list=new ArrayList(set);
		Collections.shuffle(list);
		
		Iterator it=list.iterator();

(LinkedList도 상관없고)

1. set의 모든 요소를 ArrayList에 담고

2. Collections.shuffle()을 이용해 저장된 데이터들의 순서를 뒤섞는다.

 

=>컬렉션 클래스의 매개변수 타입이 Collection 인터페이스이기 때문에

    자손인 List, Set 인터페이스를 구현한 모든 클래스의 인스턴스가 매개변수로 가능!

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형