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 |