L-j-h-c / TIL

CS, Swift, Java, C++, 개발 관련 공부한 내용 정리
11 stars 0 forks source link

[Data Structure] Map, Set, List의 차이 #8

Closed L-j-h-c closed 2 years ago

L-j-h-c commented 2 years ago

Java Collection FrameWork의 기본 구조

image

Java Collection FrameWork를 사용하는 이유?

많은 수의 데이터를 처리하기 위해서, 가장 기본적인 방법으로 배열을 사용할 수 있다. 그러나 배열은, 크기를 자유롭게 늘릴 수 없으며 삽입, 삭제에 오랜 시간이 걸리기 때문에 이와 같은 일들을 효율적으로 처리하기 위해 동적 배열 개념인 컬렉션 프레임워크가 제공된다.

컬렉션 프레임워크의 종류의 대표격으로 List, Map, Set이 있는데, 이들 인터페이스를 구분하는 가장 큰 차이점은 순서 또는 데이터의 중복 여부이다. 각각의 기능과 장단점을 알아보자.

List

List는 가장 기본적인 인터페이스로, 각 원소들에 순서가 존재하며 같은 데이터가 중복되어 들어갈 수 있다.

공통적 특징

List의 종류별 특징

ArrayList의 경우 중간에 원소를 삽입 또는 삭제할 때, 뒤에 존재하는 원소들의 index를 수정해야 하기 때문에 시간이 오래 걸린다. 그러나 LinkedList의 경우 모든 원소의 index를 수정할 필요가 없어 중간 원소의 삽입과 삭제는 효율적이지만, 더 많은 메모리 영역을 차지하게 된다.

Map

Map은 key와 value의 쌍으로 존재하는 데이터의 집합이며, key는 중복될 수 없으며 순서가 보장되지 않는다. 따라서 key를 기반으로 출력할 경우 항상 순서가 바뀌는 모습을 확인할 수 있다. 또한 검색 속도가 빠르고, 인덱스가 따로 존재하지 않기 때문에 iterator를 사용해야 한다.

Map의 종류별 특징

Set

순서가 없고, 중복된 데이터를 허용하지 않는 데이터의 집합이다. 중복되지 않는 데이터를 만들고 싶을 때 유용하다. Map과 마찬가지로 Index가 존재하지 않기 때문에 Iterator를 사용해야 한다.

Set의 종류별 특징

L-j-h-c commented 2 years ago

https://cocoon1787.tistory.com/527 https://brunch.co.kr/@springboot/57

L-j-h-c commented 2 years ago

더 공부할 부분

HashTable의 동기화와 병렬 프로그래밍에 대해 살짝 찾아봤다. 동일한 데이터에 여러 스레드에서 접근을 시도할 때 생기는 문제를 동시성의 문제라고 하는데, 이 부분에 대해서 공부하려면 시간이 더 걸릴 것 같아서 일단 남겨뒀다. 나중에 공부해보자! 일단 각 자료형의 특징에 대해서만 알아봤는데, 이를 더 깊이 이해하려면 자료구조를 디자인한 방법을 알아보는 것이 더 깊은 이해에 도움이 될 것이다. 또한 각각의 자료구조 별로 존재하는 메서드들을 언제 어떻게 활용하는 것이 효율적인지에 대한 공부도 필요해 보인다.