๐Ÿ’ป/JAVA

[Java] 16์ผ์ฐจ : ์ปฌ๋ ‰์…˜(Collection) - 2

๋”ฐ๊ถˆ 2024. 3. 11. 20:23

 

 

Set<E> ์ธํ„ฐํŽ˜์ด์Šค 

  • ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
  • ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ•˜๋‚˜์˜ null๋งŒ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HashSet,LinkedHashSet,TreeSet

 

๋ฉ”์†Œ๋“œ ์„ค๋ช…
boolean add(E e) ์ง€์ •๋œ ์š”์†Œ๊ฐ€ Set์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ ํ•œ๋‹ค. ์„ฑ๊ณตํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ด
boolean addAll
(Collection <? extends E>c)
set์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
int size() Set์˜ ์š”์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
boolean containse(Object o) ์ง€์ •๋œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
boolean isEmpty() Set์ด ๋น„์–ด ์žˆ์œผ๋ฉด true๋ฅผ ๋ฆฌํ„ด ํ•œ๋‹ค.
Object[] toArray()  Set ์š”์†Œ๋ฅผ ๊ฐ์ฒด ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด ํ•œ๋‹ค.
lterator <E> iterator() Set ์š”์†Œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ž(Iterator)๋ฅผ ๋ฆฌํ„ด ํ•œ๋‹ค.
boolean equals(Object o) ์ง€์ •๋œ ๊ฐ์ฒด์™€ Set์ด ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•œ๋‹ค.
void clear() ์š”์†Œ ์ „์ฒด๋ฅผ ์‚ญ์ œ ํ•œ๋‹ค.
boolean remove(Object o) Set ๋‚ด์—์„œ ์ง€์ •๋œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
boolean removeAll(Collection <?> c) ์ง€์ •๋œ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ Set์—์„œ ์‚ญ์ œํ•œ๋‹ค. 

 

 

HashSet<E> ํด๋ž˜์Šค

  • ํ•ด์‹œ ํ…Œ์ด๋ธ” (hash table, ์‹ค์ œ๋กœ๋Š” HashMap์˜ ์ธ์Šคํ„ด์Šค)์— ์˜ํ•ด ์ง€์›๋˜๋Š” Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค 
  • ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์š”์†Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ•˜๋‚˜์˜ null๋งŒ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

LinkedHashSet<E> ํด๋ž˜์Šค

  • HashSet ํ•˜์œ„ ํด๋ž˜์Šค
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”๊ณผ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ Set
  • ์‚ฝ์ž…ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค.
  • ์š”์†Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

TreeSet<E> ํด๋ž˜์Šค

  • SortedSet ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค
  • ์ •๋ ฌ๋œ ์ˆœ์„œ์— ์˜ํ•ด ๋ฐ˜๋ณต
  • ์š”์†Œ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • TreeSet ์š”์†Œ๋Š” Comparable ์ธํ„ฐํŽ˜์ด์Šค์˜ compareTo() ๋ฉ”์†Œ๋“œ๋‚˜ Comparator ์ธํ„ฐํŽ˜์ด์Šค์˜ compare() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋น„๊ตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ TreeSet์˜ ์š”์†Œ๋Š” Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์ด๊ฑฐ๋‚˜ Comparator๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ TreeSet ์ƒ์„ฑ์ž์— ์ธ์ž๋กœ ๋„˜๊ฒจ ๋‘ ๊ฐ์ฒด์˜ ๋น„๊ต ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ClassCastException ์ด๋ผ๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

 


 

 

 

package ch11.unit04;


import java.util.LinkedHashSet;
import java.util.Set;

/*
 - Set
 : ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
 : ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
 : null์€ ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
 : ๊ตฌํ˜„ ํด๋ž˜์Šค - HashSet, LinkedHashSet, TreeSet
 - HashSet 
 	: ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€ ๋˜์ง€ ์•Š์Œ
	: ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆ๋จ
 	: ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ
 - LinkedHashSet
 	: HashSet ํ•˜์œ„ ํด๋ž˜์Šค
 	: ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆ๋จ
 	: ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ
 	: ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ
 - TreeSet
 	: SortedSet ๊ตฌํ˜„ ํด๋ž˜์Šค
 	: ์ค‘๋ณต ํ—ˆ์šฉ ์•ˆ๋จ
 	: ์š”์†Œ๋ฅผ ์ •๋ ฌํ•จ
 	: Comparable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ํด๋ž˜์Šค๋งŒ ์ถ”๊ฐ€๊ฐ€๋Šฅ
 	: ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ์•ˆ์ „ ํ•˜์ง€ ์•Š์Œ 
 */

public class Ex01_set {

	public static void main(String[] args) {
		Set<String> set = new LinkedHashSet<String>();
		set.add("์„œ์šธ");
		set.add("๋ถ€์‚ฐ");
		set.add("๋Œ€๊ตฌ");
		set.add("์ธ์ฒœ");
		set.add("๊ด‘์ฃผ");
		set.add("๋Œ€์ „");
		set.add("์šธ์‚ฐ");
		set.add("์„ธ์ข…");
		set.add("์„œ์šธ"); // ์ด์ „ ์„œ์šธ์„ ๋ฎ์–ด์“ด๋‹ค
		
		System.out.println(set);
		
		for(String s : set) {
			System.out.print(s+" ");
		}
		System.out.println();

	}	
	

}

 

 

package ch11.unit04;

import java.util.HashSet;

import java.util.Set;

public class Ex02 {
		public static void main(String[] args) {
			Set<String> set = new HashSet<String>();
			set.add("์„œ์šธ");
			set.add("๋ถ€์‚ฐ");
			set.add("๋Œ€๊ตฌ");
			set.add("์ธ์ฒœ");
			set.add("๊ด‘์ฃผ");
			set.add("๋Œ€์ „");
			set.add("์šธ์‚ฐ");
			set.add("์„ธ์ข…");
			set.add("์„œ์šธ"); // ์ด์ „ ์„œ์šธ์„ ๋ฎ์–ด์“ด๋‹ค
			
			System.out.println(set);

	}

}

 

 

 

package ch11.unit04;

import java.util.Set;
import java.util.TreeSet;

public class Ex03 {

	public static void main(String[] args) {
		//์ค‘๋ณตํ—ˆ์šฉ ์•ˆํ•จ
		// TreeSet : ์ •๋ ฌ, Comparable ๊ตฌํ˜„ ํด๋ž˜์Šค๋งŒ ๊ฐ€๋Šฅ 
		Set<String> set = new TreeSet<String>();
		set.add("์„œ์šธ");
		set.add("๋ถ€์‚ฐ");
		set.add("๋Œ€๊ตฌ");
		set.add("์ธ์ฒœ");
		set.add("๊ด‘์ฃผ");
		set.add("๋Œ€์ „");
		set.add("์šธ์‚ฐ");
		set.add("์„ธ์ข…");
		set.add("์„œ์šธ"); // ์ด์ „ ์„œ์šธ์„ ๋ฎ์–ด์“ด๋‹ค
		
		System.out.println(set);
	}

}

 

 

 

package ch11.unit04;

import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class Ex04_lotto {

	public static void main(String[] args) {
		Set<Integer> set = lotto();
		
		for(Integer n:set) {
			System.out.print(n+" ");
		}
		System.out.println();
		
		}
	
	public static Set<Integer> lotto(){
		Set<Integer> set = new TreeSet<Integer>();
		Random rnd = new Random();
		int n ;
		
		while(set.size()<6) {
			n = rnd.nextInt(45) +1;
			set.add(n);
		}
		
		return set;
	}
	
	}