HashSet (ν΄μμ )
HashSetμ Set μΈν°νμ΄μ€λ₯Ό ꡬνν 컬λ μ
μΌλ‘, μ€λ³΅μ νμ©νμ§ μκ³ μμκ° μλ λ°μ΄ν°μ μ§ν©μ νννλ μλ£κ΅¬μ‘°μ
λλ€.
ν΅μ¬ μμ
νΉμ§ | μ€λͺ
|
μ€λ³΅ λΆκ° | λμΌν μμλ₯Ό μ€λ³΅ν΄μ μ μ₯ν μ μμ |
μμ μμ | μ μ₯ μμλ₯Ό μ μ§νμ§ μμ |
null νμ© | null κ°μ μ μ₯ν μ μμ |
μ±λ₯ | νμ, μ½μ
, μμ μκ°λ³΅μ‘λ O(1) |
μ§μ ꡬν μμ μ½λ
public class MyHashSet<E> {
private static final int DEFAULT_CAPACITY = 16;
private Node<E>[] table;
private int size;
@SuppressWarnings("unchecked")
public MyHashSet() {
table = new Node[DEFAULT_CAPACITY];
size = 0;
}
private static class Node<E> {
E data;
Node<E> next;
Node(E data) {
this.data = data;
}
}
public boolean add(E element) {
if (contains(element)) return false;
int index = getIndex(element);
Node<E> newNode = new Node<>(element);
newNode.next = table[index];
table[index] = newNode;
size++;
return true;
}
public boolean contains(E element) {
int index = getIndex(element);
Node<E> current = table[index];
while (current != null) {
if (current.data.equals(element)) {
return true;
}
current = current.next;
}
return false;
}
private int getIndex(E element) {
return Math.abs(element.hashCode() % table.length);
}
}
Java
볡μ¬
Java Collection Framework μ¬μ© μμ
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
// HashSet μμ±
Set<String> fruits = new HashSet<>();
// μμ μΆκ°
fruits.add("μ¬κ³Ό");
fruits.add("λ°λλ");
fruits.add("μ€λ μ§");
fruits.add("μ¬κ³Ό"); // μ€λ³΅ μΆκ° μλ
// κ²°κ³Ό μΆλ ₯
System.out.println("κ³ΌμΌ μΈνΈ: " + fruits); // μ€λ³΅λ "μ¬κ³Ό"λ ν λ²λ§ μ μ₯λ¨
System.out.println("μΈνΈ ν¬κΈ°: " + fruits.size());
// ν¬ν¨ μ¬λΆ νμΈ
System.out.println("μ¬κ³Ό ν¬ν¨?: " + fruits.contains("μ¬κ³Ό"));
// μμ μ κ±°
fruits.remove("λ°λλ");
System.out.println("λ°λλ μ κ±° ν: " + fruits);
// λͺ¨λ μμ μ κ±°
fruits.clear();
System.out.println("λΉμ΄μλμ?: " + fruits.isEmpty());
}
}
Java
볡μ¬