셋(Set)

YJS·2023년 9월 3일
0
post-thumbnail

🤓오늘의 공부 주제: 셋🤓

셋(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 };
profile
우당탕탕 개발 일기

0개의 댓글