셋(Set)이란?
셋(Set)은 데이터의 중복을 허용하지 않는 자료 구조. 해시 테이블을 사용한다고 해서 해시 셋이라고도 불림.
셋은 해시 테이블의 value 값은 사용하지 않고 key만 사용해서 구현. key가 key임과 동시에 데이터로 활용됨.
import { HashTable } from './HashTable.mjs';
class HashSet{
constructor(){
this.hashTable = new HashTable();
}
add(data){
if(this.hashTable.get(data) == null){
this.hashTable.set(data, -1);
}
}
isContain(data){
return this.hashTable.get(data) != null;
}
remove(data){
this.hashTable.remove(data);
}
clear(){
for(let i = 0; i < this.hashTable.arr.length; i++){
this.hashTable.arr[i].clear();
}
}
isEmpty(){
let empty = true;
for(let i = 0; i < this.hashTable.arr.length; i++){
if(this.hashTable.arr[i].count > 0){
empty = false;
break;
}
}
return empty;
}
printAll(){
for(let i = 0; i < this.hashTable.arr.length; i++){
let currentNode = this.hashTable.arr[i].head;
while(currentNode != null){
console.log(currentNode.data.key);
currentNode = currentNode.next;
}
}
}
}
export { HashSet };