자료구조 set에 대해 말해보자.

SionBackEnd·2023년 2월 21일
0

그동안 자료구조 set을 사용을 많이 안했던것 같아서 이번 기회에 한번 정리해 보겠다.

set의 구현체로는 hash, linkedhash, tree set이 존재한다.

hashSet

hashSet 은 hash 테이블을 이용하여 map형태로 값을 보관하고 그에 따라 탐색 속도가 다른 구현체들보다 훨씬 빠르다.

linkedHashSet

linked hash set 같은 경우에는 hash 테이블의 capacity 안에 존재하는 값들 끼리 연결이 되어 있기 때문에 set안에 있는 값들을 순회할때 좋은 성능을 보인다. 또한 저장된 순서를 기억하여 순회할때 저장한 값 순서대로 출력하게 된다. 하지만, 그만큼 메모리 사용비용이 증가한다.

treeSet

treeSet은 값을 저장하면 오름차순으로 기본적으로 정렬을 해준다. 그래서

정렬된 순서값을 구할 수 있다. 하지만, 값을 저장할때 정렬을 매번해주게 되어서 시간이 걸리며 순회작업을 진행할 때 hashSet보다 느리다.

순회작업 속도 linked hash set > hash set > treeSet

질문) 모든 데이터의 중복이 없고 데이터를 순회하여 모든 데이터를 출력하려고 할때 list 대신 set을 사용하면 더 이점이 있는건가요?

set은 list보다 메모리를 더 사용하기 때문에 만약 모든 데이터를 출력하려고 한다면 list를 사용하는것이 더 효율적입니다. 그리고 list가 set보다 더 단순하여 iteration이 더욱 빠릅니다.

참조사이트

https://www.youtube.com/watch?v=IkImFugfFQk&list=PLcXyemr8ZeoR82N8uZuG9xVrFIfdnLd72&index=6
설명을 아주 잘 해주신다.

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글