본문 바로가기

코딩/JAVA

JAVA 29-3. 컬렉션 프레임워크 - SET

Set

java.util 패키지에 내장된 인터페이스로써 특정 코드에서 중복된 값의 허용이 있어서는 안될 때 사용한다. 즉, Set를 사용하면 복잡한 코드구성 없이 중복된 요소들을 쉽게 제거할 수 있다는 장점이 있다.

HashSet(정렬x)과 TreeSet(오름차순 정렬)을 알아보자.

package java12;

import java.util.HashSet;
import java.util.Random;
import java.util.TreeSet;

public class Test07 {

	public static void main(String[] args) {
		HashSet<Integer> hs = new HashSet<Integer>(); // 해쉬셋<Wrapper>
		while(true) {
			int v1 = (int) (Math.random() * 45 + 1);
		//	int v2 = new Random().nextInt(("큰수" - "작은수") + 1) + "작은수");
			int v3 = new Random().nextInt(15) + 1;
			hs.add(v1);
			hs.add(v3);
			if (hs.size() >= 6)
				break;
		}
		System.out.println(hs);  //해쉬셋
		TreeSet<Integer> ts = new TreeSet<Integer>(); //트리셋
		while (true) {
			int v4 = (int) (Math.random() * 45 + 1);
//			int v = new Random().nextInt(("큰수" - "작은수") + 1) + "작은수");
			int v6 = new Random().nextInt(15) + 1;
			ts.add(v4);
			ts.add(v6);
			if (ts.size() >= 6)
				break;
		}
		System.out.println(ts); //트리셋
		System.out.println(ts.subSet(10,  30)); // 내장함수 : 10보다 크고 30보다 작은 수
	}

}

 

math.random() => double형, 0~1.0 사이의 실수형 난수, 주로 int로 변환해서 사용

math.random()*45

size() => 컬렉션프레임워크(ArrayList, Set..등) 타입의 길이를 알고자 할때 사용됨

add() => 컬렉션프레임워크에 내용 추가

 

Set 구조는 arrayList와 같이 get() 메서드를 이용하여 특정 인덱스(요소)로 접근할 수 없기 때문에 내용을 순차적으로 얻어오려면 반복자iterator를 이용한다. iterator에서 하나의 객체를 가져올 때 next()를 사용하고, hasNext()는 가져올 객체가있으면 참 아니면 거짓을 리턴한다.

 

package java13;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;

public class Test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashSet<Integer> set = new HashSet<>();  //래퍼클래스를 비워둘 수 있음
		int[][] board = new int[5][5];
		for (int i = 0 ; set.size() < 25; i++) {
			set.add(new Random().nextInt(50) + 1 );
		}
		Iterator<Integer> it = set.iterator();
		for (int i=0; i<board.length; i++) {
			for (int j=0; j<board[i].length; j++) {
				board[i][j] = (Integer)it.next(); //iterator()는 next로 데이터를 받음
				System.out.printf("%02d ", board[i][j]);
			}
			System.out.println();
		}
	}

}

 

 

+LinkedHashSet 은 Set에 들어가는 순서대로 저장한다

'코딩 > JAVA' 카테고리의 다른 글

JAVA 31. 다형성  (0) 2022.08.08
JAVA 30. 람다식  (0) 2022.08.08
JAVA 29-2. 컬렉션 프레임워크 - List  (0) 2022.08.08
JAVA 29-1. 컬렉션 프레임워크 - MAP  (0) 2022.08.08
JAVA 29. 컬렉션 프레임워크  (0) 2022.08.08