DataStructure Map & List
2022, Jan 05
알아보게 된 이유.
개발을 하면서 Map과 List를 자주 쓰는데 그 차이에 대해서 조금 더 검색해보고 알아보기로 한다.
정리를 해보자.
Map
- Map은 키-값 의 쌍으로 나열되어 있어 키값을 통해 원하는 값을 한번에 찾아낼 수 있다.
- 빈번한 검색과 범위데이터가 아닌 특정 데이터를 순간마다 캐치해야 할 때 유리한 자료구조
- Map을 이용해 저장할때는 List처럼 뭉텅이로 저장하는 것이 아니라, Map에 아이템을 저장할 때 마다 빈공간을 찾아 저장한다.
- 따라서 List보다는 데이터 저장 속도가 느릴 수 있다. Map의 가장 큰 특징이라면, 쌍을 이루는 Key와 Value 값을 이용한다는 것이다.
-
따라서 단순한 포지션보다는 저장하고 싶은 데이터가 특별한 키값을 가질 때 Map을 사용하는 것이 좋다.
- 동일한 키값을 사용하면 기존의 키값을 가지고 있는 value가 사라지고, 후에 저장한 value 값이 셋팅이 된다. 키만 다르면 value값이 중복되도 상관 없다.
- Map은 콘솔에 찍힌거와 같이 키값이 의미가 있을 때 좋은 자료구조이다.
- ArrayList안에 원하는 데이터를 검색하는 경우에는 0번부터 해당 데이터가 있을때까지 검색을 해야하지만, HashMap의 경우에는 key값을 통해서 빠르게 데이터를 검색한다.
- 요소의 추가 삭제는 List보다 성능이 나을 때가 많다. 검색성능은 기본적으로 Map이 좋다.
List
- List는 원하는 데이터 범위를 순차적으로 표현할 때 유리한 자료구조
- ArrayList안에 있는 데이터를 삽입/삭제가 빈번할때, 비효율적인 경우가 있다.
- 추가는 단순히 ArrayList내부 배열의 크기를 바꾸고 기존 배열의 데이터를 추가하는데 그치지만, 원하는 포지션의 삽입/삭제는 이야기가 다르다.
- 삽입/삭제는 해당 포지션 아래의 데이터들을 Copy 해야한다.(새로운 배열을 만든 후, 기존 배열의 값을 포지션별로 다시 채워야한다.)
- 기존 배열의 크기를 늘린 후 삽입/삭제 데이터를 처리하고 Copy된 데이터를 다시 붙인다.
- 따라서 ArrayList의 size가 큰 경우는 많은 양의 요소들을 Copy해야 하므로 내부적으로 성능이 떨어질 수 있다.