황샐리 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);
		}

결과는요? 둑두구둑두굳구

와~ 40번 없다~!

오랜만에 로또 한 번 해볼가요

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을 기준으로 높은건 오른쪽 낮은건 왼쪽 하면서 저점점점가지를 쳐가는 겁니다. 오키?. 오키.