본문 바로가기
자료 구조/기본 개념

[자료 구조] 10. Set 인터페이스

글: Song hyun 2024. 5. 10.
728x90
반응형

[자료 구조] 10. Set 인터페이스

1. Set 인터페이스란?

2. Set 인터페이스의 주요 메서드

3. 예제


 

1. Set 인터페이스란?

(1) Set 인터페이스의 개념

-Java에서 Set 인터페이스는 java.util 패키지의 일부로, 중복을 허용하지 않는 유일한 요소들을 저장하는데 사용된다. 컬렉션 프레임워크의 일부이며, 순서에 의존하지 않는 데이터 집합을 관리하기 위해 설계되었다.

=>Set 인터페이스는 주머니와 같다. 요소와 요소 간에 순서라는 개념이 없지만, 중복을 허용하지 않는다는 강력한 특징이 있다.

 

(2) Set 인터페이스의 주요 특징

(2-1) 중복 허용 불가

(2-2) 순서 보장하지 않음

(2-3) 값의 유일성

 

(3) 사용 예시

-아이디 목록 관리

-주민등록번호

-직원 번호

 

(4) 구현 클래스

-HashSet

-LinkedHashSet

-TreeSet

 

2. Set 인터페이스의 주요 메서드

(1) add(E e)

(2) remove(Object o)

(3) contains(Object o)

(4) size()

(5) isEmpty()

(6) clear()

(7) iterator()

 

 

3. 예제

package Structure.ch06;

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

public class MySetTest {
	
	public static void main(String[] args) {
		
		// 계층 구조 확인 
		// 업 캐스팅 상태 - 컴파일 시점에는 Set 계열의 타입은 멤버들만 확인 가능
		Set<Integer> mSet = new HashSet<Integer>();
		
		HashSet<Integer> set1 = new HashSet<Integer>();
		
		// 요소 추가 방법
		set1.add(1);
		set1.add(1);
		set1.add(2);
		set1.add(2);
		set1.add(3);
		
		System.out.println(set1.size()); // 사이즈 확인
		
		// 요소 제거 (요소->값을 넣음)
		set1.remove(3);
		System.out.println(set1);
		
		// set 계열은 순서를 보장하지 않음
		for(int i=0; i<set1.size(); i++) {
			// 횟수 만큼 반복은 하지만, 인덱스 개념이 없다. 
		}
		
		// for-each 구문 활용
		for (Integer mI : set1) {
			System.out.println("요소 값 추출 : "+mI);
		}
		
		// 반복자를 활용해서 요소 순회를 할 수 있다.
		Iterator<Integer> iter = set1.iterator();
		// while 구문 활용
		while(iter.hasNext()) {
			System.out.println("값 확인 : "+iter.next());
		}
		
		System.out.println("---------------");
		
		// getRandomNumber() 메서드가 호출되면, 데이터를 관리하고자 한다
		
		HashSet<Integer> lottoNumbers = new HashSet<Integer>();
		
		int whileCount=0;
		while(lottoNumbers.size()<6) {
			lottoNumbers.add(getRandomNumber());
			whileCount++;
		}
		
		System.out.println(lottoNumbers);
		System.out.println(whileCount);
		
		getRandomNumber();
		getRandomNumber();
		getRandomNumber();
		getRandomNumber();
		getRandomNumber();
		getRandomNumber();
		
		
	} // end of main
	
	public static int getRandomNumber() {
		Random random = new Random();
		return random.nextInt(45)+1;
	}

}

 

728x90
반응형