Trainings/세션 정리

Data Structure(자료구조) - 자료구조 - Set

태기의삶 2020. 5. 21. 12:00

Set은 원래 ES6가 등장하기 이전에는 자바스크립트 자체는 set을 구현하고 있지 않았다.

ES6가 등장하고 Set이라는 것이 나오고 set은 데이터 타입 중의 하나인데, 중복되는 값을 가지지 않는 값들의 리스트를 말한다.

대신 객체 형식으로 반환된다.

 

배열과 set의 차이점

배열보다 set이 더 빠르다.

 

Set이란?

Set은 array나 list처럼 순열 자료구조이며, 순서라는 개념 또한 존재하지 않는 순열 자료구조를 의미한다.

 

Set의 특징

- 데이터를 비순차적으로 저장할 수 있는 순열 자료구조이다.

- 삽입 순서대로 저장되지 않기 때문에 특정한 순서를 기대할 수 없다.

- 동일한 값을 여러 번 삽입이 불가능하고, 만약 동일한 값이 중복 저장될 경우 하나의 값만 저장된다.

 

 set을 만들 때new Set()을 활용한다.

 

Set  add 메서드를 통해 한 개의 값을 set에 추가할 수 있고, 또, size 속성을 통해 set이 가지고 있는 항목의 수를 알아낼 수 있다.

 

활용 예제

 

더 많은 예제 참고!

https://www.geeksforgeeks.org/sets-in-javascript/

 

Sets in JavaScript - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

set은 Array와 다르게 순차적으로 저장하지 않는다.

Set에서 요소들이 저장될 때, 메모리 구조는 이렇다.

출처: https://stackoverflow.com/c/wecode

1. 저장할 요소의 값의 hash 값을 구한다.

2. 해쉬값에 해당하는 공간에 값을 저장한다.

const name = new Set(["wecode", "wework"]);
console.log(name) 

이렇게 set는 저장하고자 하는 값의 해쉬값에 해당하는 bucket에 값을 저장하기 때문에 순서가 없다.

순서가 없기 때문에 indexing도 없다.

여기서 Hash는 주로 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑할 때 사용된다.

 

Set을 사용하는 이유

1. 순서 상관없이 중복된 값을 골라내야 할 때 사용한다.

2. 해쉬값을 기반으로 저장하기 때문에 look up(찾기) 이 굉장히 빠르기 때문에, 빠른 look up(찾기) 해야 할 때 사용한다.