[자료구조]List
JAVA/JAVA 2019. 4. 28. 16:37 |List
리스트는 특정 타입 값들이 순차적으로 정렬된 컬렉션입니다.
LinkedList, ArrayList 클래스를 일반적으로 사용합니다.
리스트는 자바의 배열하고 다릅니다.
리스트는 크기 지정에 한계가 없으므로 리스트를 사용하기 전에 크기를 지정할 필요가 없습니다.
LinkedList 와 ArrayList 가 각각 적합한 경우에 대해 알아보겠습니다.
배열과 리스트 차이
- 배열은 정의할 때 크기를 지정해야 함.
- 배열의 원소에 인덱스값을 지정하여 직접 접근가능(랜덤접근)
- 배열 크기를 늘려야할때 새로운 배열을 만들고 재정렬하는 절차를 가짐
- 정수 타입 배열은 final 을 지정할 수 없음
ArrayList
리스트의 데이터로 배열을 사용하는 List 인터페이스이다.
- ArrayList 클래스 생성시 배열의 초기 크기 지정할 수 있음 (default 10)
- 크기가 추가될때 마다 자동으로 배열을 재할당 함 (단,시간이 소요되고 메모리용량 소모함-> 큰 컬렉션을 이용할거면 미리 크기를 지정함)
- ArrayList 시작위치나 중간 위치에 값을 추가하려고 하면 모든 원소는 공간을 위해 이동해야됨 (=>크기가 크다면 연산량이 많은 작업임)
- 배열 크기 재할당은 단반향으로 이루어짐
- 원소를 줄여도 배열 크기는 줄지않음
LinkedList
연결리스트를 구현 할수 있는 또다른 리스트 구현체입니다.
원소들을 저장하는데 배열을 이용하지 않고 리스트안에서 다음 원소를 가리키는 내부 객체를 이용합니다.(노드참조값)
결론
ArrayList 순차적인 추가/삭제 유리함
인덱스를 참조하고 있어서 검색할때 LinkedList 보다 빠르다.
LinkedList 는 비순차적인 추가/삭제에 유리함
'JAVA > JAVA' 카테고리의 다른 글
Garbage Collector (0) | 2019.04.23 |
---|---|
jvm 메모리 구조 (0) | 2019.04.22 |
[객체지향] JAVA SOLID 원칙 (0) | 2019.02.23 |
제네릭 메소드 (0) | 2017.05.17 |
제네릭 개념 알기 (0) | 2017.05.16 |