HashSet의 메소드 예제들

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

public class SetTest {

	public static void main(String[] args) {
		/* Set 메소드 예제*/
		HashSet<Integer> set = new HashSet<Integer>();	//Set은 중복ㄴㄴ => int는 equals로 중복체크가 안돼서 int아니고 Integer
		
		// .add(객체) : set에 객체를 추가 => list는 add(객체), add(번지,객체)두개였는데 Set은 순서보장을 안해서 (객체) 1개밖에없음
		//*Set은 순서가 없으니까 번지로 접근하는 메소드들은 전부 없다고 생각하면 돼
		set.add(13);	//13이라는 값을 저장
		set.add(13);	//두번해도 중복이 안돼서 한번만 저장됨.
		set.add(11);	set.add(100);
		set.add(3);		set.add(4);
		set.add(8);		set.add(31);
		set.add(33);	set.add(29);
		
		
		//.size() : set의 크기
		System.out.println("set의 크기 :" + set.size()); //값:1 => 중복을 허용하지않아서 두번넣어도 1번으로 침
		
		//contains(객체) : 객체가 있는지 없는지 확인
		//indexOf()없음 => 번지가 없으니깐 ㅋ
		System.out.println("set에 13이 있습니까? " + set.contains(13));	//true	=>아까 10넣었음
		System.out.println("set에 11이 있습니까? " + set.contains(11));	//false
		
		//.isEmpty() : set이 비었는지 아닌지 확인
		System.out.println("set이 비어있습니까? " + set.isEmpty()); 		//false
		
		Iterator<Integer> it = set.iterator();	//List랑 Set쓸 때, 공식처럼 씀 // set.iterator(); 의 set은 맨위에 Hashset<>뒤 변수명
		while(it.hasNext()) { //다음선택할 객체가있는지 알려주는 메소드=>true/false
			//Iterator의<>클래스 안에 Integer가 있으면 (Integer)를 생략가능, <>클래스명에 Integer없으면 꼭 써야돼 (Integer)	
			Integer tmp = /*(Integer)*/ it.next();	//it.next()는 set에 있는 값 하나를 가져오는 것, scan.next()랑은 다른것
			System.out.print(tmp+ " ");	//한줄로 저장되어있는거 다 나왔음
		}								//저장한 순서대로 나오지 않고, 랜덤순으로 나옴
		System.out.println();
		
		//.remove()	:객체를 삭제하고 삭제 성공 여부를 알림 => 삭제하려는 객체가 없으면 실패할 수 있음. 리턴타입 boolean (true/false)
		System.out.println("set에 10의 값이 삭제 되었습니까? "+set.remove(10));  //false
		System.out.println("set에 10의 값이 삭제 되었습니까? "+set.remove(100)); //true
		
		//.clear() : 전체비움
		set.clear();
		System.out.println("set의 크기: "+ set.size()); //비워서 0
		
	}

}

중복되지 않는 5개의 수가 입력 될 때 까지 입력한 후, 입력이 완료되면 종료하고 출력하는 코드

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class SetTest2 {

	public static void main(String[] args) {
	/* 중복되지 않는 5개의 수가 입력 될 때 까지 입력한 후, 입력이 완료되면 종료하는 코드를 작성하세요.
	 * 예시)
	 * 정수를 입력하세요 : 1
	 * 정수를 입력하세요 : 2
	 * 정수를 입력하세요 : 3
	 * 정수를 입력하세요 : 4
	 * 정수를 입력하세요 : 1
	 * 정수를 입력하세요 : 2
	 * 정수를 입력하세요 : 3
	 * 정수를 입력하세요 : 5
	 * 입력된 정수 : 1 2 3 4 5 (출력은 순서에 상관없이 나오는 것) =>만약에 순서가 상관이있으면List가 낫지
	 * */
	Scanner scan = new Scanner (System.in);
	HashSet<Integer> num = new HashSet<Integer>();
	
		while(num.size()<5) {
			System.out.print("정수를 입력하세요: ");
			num.add(scan.nextInt());
		}
		Iterator<Integer> it = num.iterator();	
		while(it.hasNext()) {
			System.out.print(it.next() + " ");
		}
		
	}
}

중복되지 않은 6개의 수를 랜덤으로 생성하여 저장한 후, 출력하는 코드

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

public class SetTest3 {

	public static void main(String[] args) {
		/* 중복되지 않은 6개의 수를 랜덤으로 생성하여 저장한 후, 출력하는 코드를 작성하세요. 
		 * 단, 순자의 범위는 1~45 */

		Integer min=1, max=45;
		HashSet<Integer> randomNum= new HashSet<Integer>();
		
		while(randomNum.size()<6) {
			randomNum.add((int)(Math.random()*(max-min+1)+min));
		}
		System.out.print("랜덤으로 생성된 6개의 숫자: ");
		Iterator<Integer> num = randomNum.iterator();
		while(num.hasNext()) {
			System.out.print(num.next()+" ");
		}
	}
}