HashSet
HashSet์ด๋?
Set ์ธํฐํ์ด์ค์์ ์ง์ํ๋ ๊ตฌํ ํด๋์ค์ด๋ค.
์์๋๋ก ์ ๋ ฅ๋์ง ์๊ณ , ์ผ์ ํ๊ฒ ์ ์ง๋์ง ์๋๊ฒ ํน์ง์ด๋ค.
HashSet์ null ์์๋ ํ์ฉํ๋ค.
์ด ํด๋์ค์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ
์ค๋ณต์ ๊ฑธ๋ฌ๋ด๋ ๊ณผ์
HashSet์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๋จผ์ ๊ฐ์ฒด์ hashCode()๋ฉ์๋๋ฅผ ํธ์ถํด์ ํด์ ์ฝ๋๋ฅผ ์ป์ด๋ธ ๋ค์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด๋ค์ ํด์ ์ฝ๋์ ๋น๊ตํ ๋ค ๊ฐ์ ํด์ ์ฝ๋๊ฐ ์๋ค๋ฉด ๋ค์ equals() ๋ฉ์๋๋ก ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํด์ true๊ฐ ๋์ค๋ฉด ๋์ผํ ๊ฐ์ฒด๋ก ํ๋จํ๊ณ ์ค๋ณต ์ ์ฅ์ ํ์ง ์์ต๋๋ค.
๋ฌธ์์ด์ HashSet์ ์ ์ฅํ ๊ฒฝ์ฐ, ๊ฐ์ ๋ฌธ์์ด์ ๊ฐ๋ String๊ฐ์ฒด๋ ๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ์ฃผ๋๊ณ ๋ค๋ฅธ ๋ฌธ์์ด์ ๊ฐ๋ String๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๊ฐ์ฃผ๋๋๋ฐ, ๊ทธ ์ด์ ๋ Stringํด๋์ค๊ฐ hashCode()์ equals() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ ๊ฐ์ ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ hashCode()์ ๋ฆฌํด ๊ฐ์ ๊ฐ๊ฒ, equals()์ ๋ฆฌํด ๊ฐ์ true๊ฐ ๋์ค๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ณ์ ์ ์ธ
HashSet์ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค
HashSet<๋ฐ์ดํฐํ์ > ๋ณ์๋ช = new HashSet<๋ฐ์ดํฐํ์ >(); ์ผ๋ก ์ ์ธํด์ค๋ค.
HashSet<Integer> : Integerํ์ HashMap ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค.
HashSet<String> : Stringํ์ HashMap ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค.
HashSet<Integer> set = new HashSet<Integer>();
HashSet<String> set2 = new HashSet<String>();
๊ฐ ์ถ๊ฐ
HashSet์ add(value) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ถ๊ฐํ๋ค.
์ถ๊ฐ๋๋ ๊ฐ์ HashSet<๋ฐ์ดํฐํ์ >์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์ถ๊ฐํด์ค๋ค.
public class HashSetTest {
public static void main(String[] args) {
// Integer
HashSet<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(1);
// String
HashSet<String> set2 = new HashSet<String>();
set2.add("a");
set2.add("b");
set2.add("c");
set2.add("a");
}
}
๊ฐ ์ญ์
HashSet์ remove(value) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ๋ value ๊ฐ๋ง ์ญ์ ๊ฐ ๋๋ค.
์ ๋ถ ์ญ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ HashSet์ clear() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
public class HashSetTest {
public static void main(String[] args) {
// Integer
HashSet<Integer> set = new HashSet<Integer>();
set.remove(1);
set.clear();
// String
HashSet<String> set2 = new HashSet<String>();
set2.remove("a");
set2.clear();
}
}
ํฌ๊ธฐ ๊ตฌํ๊ธฐ
HashSet์ size() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ํ์ฌ HashSet์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ ์ ์๋ค.
์๋์ ๊ฐ์ด ์ค๋ณต๊ฐ์ด ๋ค์ด์ค๋ฉด ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค.
Size() ๋ฉ์๋ ์ฌ์ฉ์ ๋ ๋ค ๊ฒฐ๊ณผ๊ฐ 3์ผ๋ก ์ถ๋ ฅ๋๋ค.
public class HashSetTest {
public static void main(String[] args) {
// Integer
HashSet<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(1);
System.out.println("set์ ํฌ๊ธฐ : " + set.size());
// String
HashSet<String> set2 = new HashSet<String>();
set2.add("a");
set2.add("b");
set2.add("c");
set2.add("a");
System.out.println("set2์ ํฌ๊ธฐ : " + set2.size());
}
}
๊ฒฐ๊ณผ ํ๋ฉด
๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
HashSet ๋ฐ์ดํฐ๋ฅผ ๋จ์ํ println์ผ๋ก ์ถ๋ ฅ์ ํ๋ ๊ฒฝ์ฐ [1, 2, 3], [a, b, c] ํํ๋ก ์ถ๋ ฅ์ ํ๊ฒ ๋๋ค.
ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๊ฒฝ์ฐ Iterator๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
import java.util.HashSet;
import java.util.Iterator;
public class HashSetTest {
public static void main(String[] args) {
// Integer
HashSet<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(1);
System.out.println("set์ ๊ฐ : " + set);
// String
HashSet<String> set2 = new HashSet<String>();
set2.add("a");
set2.add("b");
set2.add("c");
set2.add("a");
System.out.println("set2์ ๊ฐ : " + set2);
// Integer ์ถ๋ ฅ
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.print(iter.next() + " ");
}
System.out.println("");
// String ์ถ๋ ฅ
Iterator iter2 = set2.iterator();
while(iter2.hasNext()) {
System.out.print(iter2.next() + " ");
}
}
}
๊ฒฐ๊ณผ ํ๋ฉด
๊ฒ์ํ๊ธฐ
Hashset ๋ด๋ถ์ ์ํ๋ ๊ฐ์ ๊ฒ์ํ๋ ๊ฒฝ์ฐ contains(value) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
๊ฐ์ด ์กด์ฌํ๋ค๋ฉด true, ๊ฐ์ด ์๋ค๋ฉด false๋ฅผ return
public class HashSetTest {
public static void main(String[] args) {
// Integer
HashSet<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(1);
System.out.println("1์ ์๋๊ฐ? : " + set.contains(1));
// String
HashSet<String> set2 = new HashSet<String>();
set2.add("a");
set2.add("b");
set2.add("c");
set2.add("a");
System.out.println("a๋ ์๋๊ฐ? : " + set2.contains("a"));
}
}
๊ฒฐ๊ณผ ํ๋ฉด
'๐ ์ฝ๋ฉํ ์คํธ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Comparable & Comparator (0) | 2024.01.09 |
---|---|
[JAVA][์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ์ ( TreeSet ) (0) | 2023.12.12 |
[JAVA][์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ( Greedy Algorithm ) (0) | 2023.02.09 |
[JAVA] hasNextInt ๋ฉ์๋ (0) | 2023.01.05 |
[JAVA] split() ์ธ์ ์ฌ๋ฌ๊ฐ (0) | 2022.12.26 |