본문 바로가기
JAVA/Collection

SetTest

by 미눅스[멘토] 2023. 6. 22.
728x90
package kr.or.ddit.basic;

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

public class setTest {
	public static void main(String[] args) {
	/*
	 * List와 Set의 차이점
	 	1.list
	 	 -데이터의 순서(index)가 있다
	 	 -중복되는 데이터를 저장할 수 있다.
	 	
	 	2.Set
	 	 -데이터의 순서(index)가 없다.
	 	 -중복되는 데이터를 저장할 수 없다.
	 *	 
	 */
		
		HashSet hs1 = new HashSet();
		// Set에 데이터를 추가할 때도 add()메서드를 사용한다.
		hs1.add("DD");
		hs1.add("AA");
		hs1.add(2);
		hs1.add("CC");
		hs1.add("BB");
		hs1.add(1);
		hs1.add(3);
		
		System.out.println("Set의 개수 : " + hs1.size());
		System.out.println("Set데이터 =>" + hs1);
		
		// Set에 중복되는 데이터를 추가하면 false를 반환하고 데이터는 추가되지 않는다.
		boolean isAdd = hs1.add("FF");
		System.out.println("중복되지 않을 때 : " + isAdd);
		System.out.println("Set데이터 =>" + hs1);
		
		isAdd=hs1.add("CC");
		System.out.println("중복될 때 : " + isAdd);
		
		//Set의 데이터를 수정하려면 수정하는 명령이 따로 없기 떄문에 해당 자료를 삭제한 후 추가해 주는 방법을 이용한다.
		
		//삭제하는 메서드 : remove(삭제할 자료) ==> 반환값 : 삭제성공(true), 삭제실패(false)
		//전체 데이터 삭제 : clear()
		
		// "FF" 데이터를 "EE"로 변경하기
		hs1.remove("FF");
		System.out.println("삭제후 set => " + hs1);
		hs1.add("EE");
		System.out.println("Set데이터 =>" + hs1);
		
//		hs1.clear();
//		System.out.println("clear후 set데이터 => " + hs1);
//		
		/*
		 Set의 데이터는 순서(index)가 없기 때문에 List처럼  인덱스로 데이터를 하나씩 불러올 수 없다.
		 그래서 데이터를 하나씩 얻기 위해서는 Iterator형 객체로 변환해야 한다.
		 
		 - set형의 데이터들을 Iterator형의 객체로 변환하는 메서드 ==> iterator()
		 */
		
		Iterator it = hs1.iterator();  //Set 데이터를 이용하여 Iterator로 변환하기
		
		
		//Iterator객체의 hasNext()메서드
		//		==> Iterator의 데이터를 가리키는 포인터가 현재 가리키는 위치의 다음 번째에 데이터가 있는지 검사한다.
		//		==>그래서 데이터가 있으면 ture, 없으면 false를 반환한다.
		while (it.hasNext()) {
			//Iterator객체의 next()메서드
			// ==> Iterator의 데이터를 가리키는 포인터가 현재 가리키고 있는 곳의 다음번째로 포인터를 이동한 후 
			//		그 곳의 데이터를 꺼내와 반환한다.
			System.out.println(it.next());
		}
		
		System.out.println("-----------------------------------------------");
		//---------------------------------------------------------------
		
		//우리반 학생들 중 번호를 이용하여 추첨하는 프로그램을 작성해 보자.
		// 번호는 1번부터 26번까지 잇고 추첨할 인원은 3명이다.
		// 당첨자를 출력해 보시오.
		
		// 난수 만들기 (23 ~ 55 사이의 난수 만들기)
		// random.nextInt( (최대값 - 최소값 +1) ) + 최소값
	
		Random random = new Random();
//		for (int i = 0; i < 20; i++) {
//			int r = random.nextInt(55-23+1)+23;
//			System.out.println(r);
//		}
		
		HashSet<Integer> testSet = new HashSet<>();
		while (testSet.size() < 3) {  //Set의 크기가 원하는 개수가 될 때까지 반복
			testSet.add(random.nextInt(26)+1); //난수를 만들어서 Set에 추가한다.
		}
		
		System.out.println("당첨자 번호 : " + testSet );
		
	}
}

'JAVA > Collection' 카테고리의 다른 글

StackQueueTest  (2) 2023.06.22
MapTest  (0) 2023.06.22
ListSortTest02  (0) 2023.06.22
ListSortTest01  (0) 2023.06.22
EqulsHashCodeTest  (0) 2023.06.22