이전 내용을 혹시 보시고 이 글을 읽고 계신가요? 만약 그렇다면 전체적인 카테고라이징은 되었을 것이라 생각합니다. 그래서 이젠 데이터 구조에 대해 장단점에 대해서 짧게 설명하고 넘어갈께요. 지식을 배운다음에는 언제 사용할지를 함께 고민해야 그 지식을 사용할 수 있다고 생각하기 때문에 이부분도 한번은 봐두시길 추천드립니다!
배열
장점: index 를 통해 특정 데이터에 빠르게 접근할 수 있고, 삽입(insert()) 그리고 삭제(remove())를 쉽게 할 수 있다.
단점: 고정된 크기를 가지고 있고 상대적으로 삭제와 검색이 느리다.
정렬된 배열(오름차순 or 내림차순)
장점: 그냥 배열보다는 빠르다.
단점: 배열과 동일한 단점을 가지고 있다.
큐(Queue)
ex) swift에서 “deqeueReusable”, “DispatchQueue” 관련 객체에서 사용되는 개념
장점: FIFO(first-in-first-out)을 활용할 수 있다.
단점: 상대적으로 접근속도 자체가 느리다.
스텍(Stack)
ex) 컨트롤러에서 present할 때마다 하나씩 스텍이 쌓이는것과 유사합니다.
장점: LIFO(last-in-first-out)접근이 가능하다.
단점: 상대적으로 접근속도 자체가 느리다.
리스트(List)
장점: 데이터 삽입 삭제 속도가 빠르다.
단점: 검색 시, 속도가 느리다.
해시 테이블(Hash table)
장점: 키값을 미리 알고 있따면 매우 빠르다.(read, create 모두)
단점: 키값을 모르면 느리다. 그리고 메모리 효율성이 떨어진다
힙(Heap)
장점: 삽입 삭제가 상당히 빠르고, 마지막값이나 첫번째 값에 빠르게 접근할 수 있다.
단점: 마지막과 첫번째를 제외한 접근은 느리다.
트라이, 이진트리, 레드블랙트리, R트리, 그래프 에 대해서 책에서 설명하고 있으나 이것은 추후에 다시 따로 설명하겠습니다.