자료구조 -Array, ArrayList, LinkedList, List
자료구조
Array (배열)
- 연속된 메모리 공간에 순차적으로 저장된 데이터 모음
- 메모리 공간에 필요한 영역을 미리 정해두고 사용하기에 크기를 반드시 지정해야한다.
- 변하지 않는 정적인 크기의 데이터를 다룰때 적합하다.
- 선언된 값은 다시 선언하지 않는 이상은 변경이 안된다.
- 배열을 구성하는 각각의 값을 'element', 위치를 'index'라고 한다.
int[] array = new int[3]
List (리스트)
- 선형 자료구조
- 빈번하게 사용되는 자료구조 중 하나
- 배열과 달리 다량의 데이터를 다루는데 좋음
- 중복된 데이터의 저장을 허용
- 인덱스가 중요하지 않고 element의 순서가 중요하다
ArrayList (배열 리스트)
- 배열의 단점을 보완한 배열을 이용해 구현된 리스트
- 크기를 정해주지 않아도 되는 선형 리스트
- 인덱스를 이용해 내부의 객체를 관리한다.
- 데이터가 추가되어 용량이 초과되면 자동으로 용량을 늘린다.
- 데이터의 추가 / 삭제가 느리다
- 데이터가 배열에 저장되는 것이므로, 중간 index 에 특정 데이터를 추가, 삭제하면 이후의 데이터들이 한칸씩 뒤로 움직여야 하는 번거로움이 있다.
LinkedList (연결 리스트)
- 선형 구조의 자료구조
- 메모리의 제한이 없다
- 순서를 유지하면서 추가, 삭제가 쉽다.
- 구성요소는 'Node'는 데이터와 포인터로 구성되어있다.
- 시작은 'Head', 리스트의 마지막 노트는 'Tail' 이라고 한다.
- 공간 효율이 좋지는 않다.
- 특정 데이터를 찾을때 head부터 순차적으로 찾기에 접근 속도가 느리다
- 데이터의 추가, 삭제 후 연결을 재구성 해야한다.
한 줄 생각
- 그냥 공부하고 넘어가는 것보다, 그날 공부한 것을 글로써 작성을 하는것은 이해에 대한 깊이가 다르다.