Array
- 여러 데이터를 하나의 이름으로 그룹핑해서 관리 하기 위한 자료구조
- 유일한 식별자 인덱스가 있음
- 배열은 정의와 동시에 길이를 지정하며 길이를 바꿀 수 없음
String[] names = {"전민규","차태웅","김기원","이화수","김유성","박정준","김주성"};
names.lenghs()
Array 단점
-
기능이 없음
-
기본적으로 배열은 길이를 바꿀수 없고 배열의 길이를 변경하기 위해서
다음과 같은 처리가 이루어 져야한다.
- 새로운 길이의 배열 할당 (메모리 공간 탐색)
- 데이터 복사
- 기존 배열 삭제
-
배열은 인덱스에 따라서 값을 유지하기 때문에, 원소(Element) 삭제되어도 빈 자리(null)가 남게 된다. (불필요한 메모리 공간 차지)
List
- 빈틈없는 데이터의 적재, 순서가 있는 데이터의 모임 (Sequence)
- 몇 번째 데이터인가를 나타내는 인덱스 (배열에서는 식별자)
- JAVA의 Collection Interface로 부터 상속 받음 ( 해당 기능 사용 가능 )
List 기능
- 처음, 중간, 끝 어디든지 원소를 추가/삭제 가능
ArrayList
- 말 그대로 배열을 이용해서 구현한 리스트로 인덱스를 이용하여 접근이 빠름
- 데이터 추가/삭제가 느림
- 내부적으로 배열에 데이터를 저장하기 때문에 데이터를 중간에 삽입시 뒤에있는 데이터들은 한칸씩 뒤로 밀려야 하기 때문, 삭제도 마찬가지
LinkedList
- 데이터를 저장하는 각 노드가 이전 노드와 다음 노드를 가리키는 일반적인 리스트
- 데이터 추가/삭제가 빠름
- 데이터 추가시 노드와의 연결을 끊고 새로운 데이터를 넣어주면 되기 때문 (이전 노드와 다음 노드의 상태만 변경하면 됨)
- 데이터의 접근이 느림
- 검색 시 처음부터 노드를 순회해야 하기 때문.