์งํฉ์ ๋จ์ํ ๊ณ ์ ํ ๊ฐ์ฒด์ ๋ชจ์์
๋๋ค. ๊ณ ์ ํจ์ ๋ ๊ฐ์ฒด๊ฐ ๋์ผํ ๊ฐ์ ๊ฐ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ธํธ์ ๊ตฌํ์ ๋ฐ๋ผ ์ฃผ๋ฌธํ ์๋ ์๊ณ ์ฃผ๋ฌธํ์ง ์์ ์๋ ์์ต๋๋ค. ADT(Abstract Data Type)๋ก์์ Java ์ธํธ์๋ ๋ช ๊ฐ์ง ์ฃผ์ ์์
์ด ์์ต๋๋ค(์ฌ๊ธฐ์ T๋ int, String ๋๋ ๋ชจ๋ ํด๋์ค ๊ฐ์ฒด์ ๊ฐ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ๋ํ๋).

boolean add(T item)
: ํญ๋ชฉ์ด ์งํฉ์ ์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋๋ฉด true๋ฅผ ๋ฐํํ๊ณ ํญ๋ชฉ์ด ์ด๋ฏธ ์งํฉ์ ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.boolean remove(T item)
: ํญ๋ชฉ์ด ์งํฉ์์ ์ฑ๊ณต์ ์ผ๋ก ์ ๊ฑฐ๋๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค(ํญ๋ชฉ์ด ์งํฉ์ ์๋ ๊ฒฝ์ฐ).boolean contains(T item)
: ํญ๋ชฉ์ด ์งํฉ์ ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.boolean isEmpty()
: ์งํฉ์ด ๋น์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
contains()
์ธ์ง์ ๋ฐ๋ผ O(1) ๋๋ O(log n) ์๊ฐ ๋ณต์ก๋HashSet
TreeSet
, ๊ฐ๊ฐ. ๊ทธ๋ ๋ค๋ฉด ์ธํธ๋ ๋ฌด์์ ์ํด ์ฌ์ฉ๋ ์ ์์ต๋๊น? ์, ID, ์ด๋ฆ ๋๋ ๊ธฐํ ๊ณ ์ ์๋ณ์์ ๊ฐ์ ๋ง์ ๊ฐ๋ณ ๊ฐ์ฒด๋ฅผ ์ถ์ ํด์ผ ํ๊ณ ์ด๋ฌํ ์ปฌ๋ ์
์ ํญ๋ชฉ์ด ์๋์ง ์์ฃผ ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ ์งํฉ์ด ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. Student
๋ค์์ ์งํฉ์ ์ฌ์ฉ ์ฌ๋ก ์์
๋๋ค. ์ฃผ์ด์ง ์์
์ ๋ชจ๋ ํ์์ ๋ํ๋ด๋ ๊ฐ์ฒด ๋ชฉ๋ก์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค . ๊ฐ๊ฐ์ Student
์ด ํด๋์ค์ ๋ํด ๊ณ ์ ํ ์ด๋ฆ(๋ฌธ์์ด) ๋ฐ ๋ฑ๊ธ(int)์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ชจ๋ A ํ์(๋ฑ๊ธ >=90)์ ๋ชฉ๋ก์ ์์ฃผ ์ฐธ์กฐํ๋ ค๋ ๊ฒฝ์ฐ ์ด ๋ชฉ๋ก์ ๋ฐ๋ณตํ๊ณ ๋งค๋ฒ ๋ชจ๋ ํ์์ ๋ฑ๊ธ์ ํ์ธํ๋ ๊ฒ์ ์ง๋ฃจํ ๊ฒ์
๋๋ค. HashSet
๋์ ๋ค์ ๊ณผ ๊ฐ์ด ํด๋์ค์ ๋ชจ๋ A ํ์์ ์ถ์ ํ๋ ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค .
- ํ์์ ์ฑ์ ์ด ์
๋ฐ์ดํธ๋ ๋๋ง๋ค ํ์์ ์๋ก์ด ์ฑ์ ์ด 90 ์ด์์ธ์ง ์๋์ง ๊ฐ๋จํ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ทธ๋ ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ A ํ์ ์ธํธ์ ์ถ๊ฐํ์ญ์์ค.
add()
- ์ด๋ฏธ A ํ์์ธ ๊ฒฝ์ฐ ์ด ์์ ์ ๋ฌด์๋ฉ๋๋ค.
- ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ์ฌ A ํ์ ์ธํธ์์ ์ ๊ฑฐํ์ญ์์ค.
remove()
- ์ด ์์ ์์ ๊ทธ๋ค์ด A ํ์์ด ์๋์๋ค๋ฉด ์ด ์์ ์ ๋จ์ํ ๋ฌด์๋ฉ๋๋ค.
- ๊ทธ๋ ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ A ํ์ ์ธํธ์ ์ถ๊ฐํ์ญ์์ค.
contains(โJohnny Appleseedโ)
์ธํธ์ฅ์ ์ ํ๋ฅผ ๊ฑธ์ด ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์ด๊ฒ์ ์งํฉ์ ๋ํ ์ฌ์ฉ ์ฌ๋ก์ ํ ์์ผ ๋ฟ์ด๋ฉฐ A ํ์์ ์ถ์ ํ๋ ํน์ ๋ฌธ์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ตฌํ: Java์ HashSet ๋ฐ Java TreeSet ์์
HashSet
in Java์ TreeSet
in Java๋ ๋ชจ๋ java.utils package
. ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
๋๋
import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
Java HashSet
์ Java ์ ์ฃผ์ ์ฐจ์ด์ ์ ์ ๋ ฌ๋๋ ๋ฐ๋ฉด ์ ๋ ฌ๋์ง ์๋๋ค๋ TreeSet
๊ฒ์
๋๋ค . ์ด๊ฒ์ด ์ฃผ์ ์์
์ ๋ํด O(log n) ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ๋ฐ๋ฉด O(1) ๋๋ ์ผ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์ด์ ์
๋๋ค. ํญ์ ์ง์๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค . ์์์ ์ธ๊ธํ ํค ์ค์ ์์
์ธ์๋ Java์ ๋ฐ ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ ์ฉํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. TreeSet
HashSet
TreeSet
HashSet
TreeSet
HashSet
TreeSet
void clear()
: ๋ชจ๋ ๊ฐ์ฒด ์งํฉ์ ์ง์๋๋ค.int size()
: ์งํฉ์ ๊ฐ์ฒด ์๋ฅผ ๋ฐํํฉ๋๋ค.Object clone()
: ์งํฉ์ ๋จ์ ๋ณต์ฌ๋ณธ์ ๋ฐํํฉ๋๋ค.Iterator iterator()
: ์ฒซ ๋ฒ์งธ ๊ฐ์ฒด์์ ์์ํ์ฌ ์งํฉ์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
size()
'A' ํ์์ด ๋ช ๋ช
์ธ์ง ํ์ธํ๊ณ ์ถ๊ฑฐ๋ clear()
ํ๊ธฐ ๋ง์ ๋ชฉ๋ก์ ์ง์ฐ๊ณ ์ถ๋ค๋ฉด ์ ํ๋ฅผ ๊ฑธ ์ ์์ต๋๋ค. clone()
์ค๊ฐ ๋ณด๊ณ ์์ ๊ฐ์ ํน์ ์์ ์ A ํ์ ๋ชฉ๋ก์ ๋ณต์ ๋ณธ์ ๋ง๋ค๊ณ ์ ์งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค(์ด๋ ๊ฒ ํ๋ฉด ๋ณต์ ๋ณธ์ด ์๋ณธ๊ณผ ํจ๊ป ์ต์ ์ํ๋ก ์ ์ง๋์ง ์์) .
์๋ฐ ํด์์ ์์
๋ค์์ Java์์ ์ฌ์ฉ๋๋ aHashSet
of s ์ ๊ฐ๋จํ ์์
๋๋ค .String
import java.util.HashSet;
class HashSetDemo {
public static void main(String[] args)
{
// create a HashSet of Strings
HashSet<String> hs = new HashSet<String>();
// Add elements using the add() method
hs.add("Collin");
hs.add("Bob");
hs.add("Abigail");
// Duplicates will ignored; this statement is useless
hs.add("Collin");
System.out.println(hs);
System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
System.out.println("Max is in the set (T/F): " + hs.contains("Max"));
}
}
์ถ๋ ฅ: --------
[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false
์๋ฐ ํธ๋ฆฌ์ ์์
Java ์ธํธ ์์ ๋ ์ด๋ก ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ค์์ Java์์ ์ฌ์ฉ๋๋ aTreeSet
of s ์ ๊ฐ๋จํ ์์
๋๋ค .String
import java.util.TreeSet;
class TreeSetDemo {
public static void main(String[] args)
{
// create a TreeSet of Strings
TreeSet<String> ts = new TreeSet<String>();
// Add elements using the add() method.
ts.add("Collin");
ts.add("Bob");
ts.add("Abigail");
// Duplicates will ignored; this statement is useless
ts.add("Collin");
// printing the set prints the names in alphabetical order!
System.out.println(ts);
System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
System.out.println("Size of the set: " + ts.size());
ts.clear();
System.out.println("Size of the set after clear(): " + ts.size());
}
}
์ถ๋ ฅ: -------
[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
๊ทธ๊ฒ ๋ค์ผ! ์ด๊ฒ์ด ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ๐
GO TO FULL VERSION