๐ป/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;
}
}