You are a developer, not a coder.

Array, List, Map 본문

Development Basic

Array, List, Map

Mattmk 2020. 6. 3. 23:44
SMALL

1. Array vs List

  Array ArrayList
사이즈 초기화시 고정
int[] myArray = new int[6];
초기화시 사이즈를 표시하지 않음. 유동적
ArrayList<Integer> myArrayList = new ArrayList<>();
속도 초기화시 메모리에 할당되어 속도가 빠르다. 추가시 메모리를 재할당하여 속도가 느리다.
변경 사이즈 변경 불가 추가 삭제 가능
add(), remove() 로 가능
다차원 가능
int[][][] muttiArray = new int [3][3][3];
불가능

 

2. List

  • 내부구현은 배열로 되어 있다.
  • 알맞는 데이터 저장공간만 있다면 데이터 저장속도는 빠르다.
  • 순차적으로 데이터를 저장하므로, 데이터 특징이 포지션별로 의미가 있을때 사용하는것이 좋다. 이말은 즉, 순차적으로 저장된 데이터를 순차적으로 화면에 배치시킬때 좋다는 것이다.
  • 원하는 포지션(인덱스)의 삽입/삭제는 해당 포지션 아래의 데이터들을 모두 Copy해야된다. (기존 배열의 크기를 늘린후 삽입/삭제 데이터를처리하고 Copy된 데이터를 다시 붙인다.)
  • 따라서 ArrayList의 Size가 큰 경우는 많은 양의 요소들을 Copy해야 하므로 내부적으로 성능이 떨어질 수 있는것이다.

* 정리

데이터를 순차적으로 받고, 특정 데이터가 아닌 원하는 데이터 범위를 순차적으로 표현할 때 유리한 자료구조라 볼수있다.

 

3. Map

  • List처럼 뭉텅이로 저장하는것이 아니라, Map에 아이템을 저장할때마다 빈공간을 찾아 저장한다.
  • List보다는 데이터 저장속도가 느릴수 있다.
  • Map의 가장 큰 특징이라면, 쌍을 이루는 Key와 Value값을 이용한다는 것이다.
  • 따라서 단순한 포지션 (인텍스) 보다는 저장하고 싶은 데이터가 특별한 Key값을 가질때 Map을 사용하는것이 좋다.
  • 동일한 Key값을 사용하면 기존의 Key값을 가지고 있는 value가 사라지고 후에 저장한 value값이 셋팅된다. key만 다르다면 value값이 중복되고 상관없다.
  • ArrayList로 데이터를 검색할 경우 0번부터 해당 데이터가 있을때 까지 검색을 해야하지만 HashMap의 경우는 key값을 통해서 빠르게 데이터를 검색한다.

 

* 정리

Map은 빈번한 검색과 범위데이터가 아닌 특정 데이터를 순간마다 캐치해야할 때 유리한 자료구조이다.

 

LIST

'Development Basic' 카테고리의 다른 글

Heap 에대해서  (0) 2020.06.03
Queue에 대해서  (0) 2020.06.03
Cookie vs Session  (0) 2020.06.03
Heap에 대해서  (0) 2020.05.28
Stack에 대해서  (0) 2020.05.28
Comments