응용 프로그래밍 및 화면 구현
SET - Hash / Tree
황샐리
2022. 4. 26. 16:06
리스트랑은 다릅니다.
셋의 가장 큰 특징은? 중복으 ㄹ허용 하지 않음
[Hash]
package list;
import java.util.HashSet;
import java.util.Set;
public class HashSetTEST {
public static void main(String[] args) {
Set<Integer> sets=new HashSet<Integer>();
for(int i=1; i<=45; i++) {
sets.add(i);
}
sets.add(10);
//중복을 허용하지 않아요.
System.out.println(sets.size());
}
}
실행결과는? 45
여기서
sets.add(10);sets.add(10);sets.add(10);sets.add(10);sets.add(10);
이렇게 붙이면 10이 5개니까 50이겠죠~~~?
아니라구요!! 중복이라 그대로 45까지만 나옴.
저 아래에
Iterator<Integer> it=sets.iterator();
while(it.hasNext()) {
Integer n=it.next();
System.out.println(n);
이렇게 넣어주면 1부터 45까지 쭈주주죽 나옵니다.
제거는 리무브 통해서 가능합니다.
Iterator<Integer> it=sets.iterator();
sets.remove(40);
while(it.hasNext()) {
Integer n=it.next();
System.out.println(n);
}
이렇게 하면 40번이 안나온다고요. 는 무슨 오류가 떴어요 왜그럴가요?
삭제 하고 데이터를 내놔야지!!!
>>수정
sets.remove(40);
Iterator<Integer> it=sets.iterator(); //자리바꿨당
while(it.hasNext()) {
Integer n=it.next();
System.out.println(n);
}
결과는요? 둑두구둑두굳구
오랜만에 로또 한 번 해볼가요
package set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
public class HashSetTest02 {
public static void main(String[] args) {
Set<Integer> lotto=new HashSet<Integer>();
Random ran=new Random();
int c=0;
while(lotto.size()<6){
int num=ran.nextInt(45)+1;
lotto.add(num);
c++;
}
System.out.println("회전수 : "+c);
Iterator<Integer> it=lotto.iterator();
while(it.hasNext()) {
System.out.printf(" %02d", it.next());
}
}
}
떼잉 정렬이 안되어버리네
[Tree]
로직은 위와 같습니다.
Set<Integer> lotto=new TreeSet<Integer>();
Random ran=new Random();
int c=0;
while(lotto.size()<6){
int num=ran.nextInt(45)+1;
lotto.add(num);
c++;
}
해쉬에서 트리로 바꿨더니???
왕 애가 정렬이되어버렸네
막 정렬이 되어부라~~~
왜 정렬이 이렇게 잘되는가? 바로 트리그조 때문이죠
트리 구조!!1
이런느낌. 오키? 저 숫자는 신경쓰지마세요. 사진출처는 사진에 링크 녀 놨습니다.
저 위에서 봤던 로또를 예를 들자면 30을 기준으로 높은건 오른쪽 낮은건 왼쪽 하면서 저점점점가지를 쳐가는 겁니다. 오키?. 오키.