일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- docker
- IntelliJ
- 이직
- 스타트업
- dfs
- 코딩테스트
- 주니어
- 프로그래머스
- 구름LEVEL
- 도커
- 인텔리제이
- spring boot
- 개발자
- 스프링 부트
- 자료구조
- spring
- bfs
- 백엔드
- HashMap
- 구현
- 해시맵
- 스프링
- 배열
- 해결
- 명령어
- 문자열
- 스프링부트
- HTTP
- Java
- Linux
- Today
- Total
마이의 개발 블로그
[자료구조] ArrayList와 LinkedList 비교 (자바 컬렉션 프레임워크) 본문
배경
- 자바 컬렉션 프레임워크의 컬렉션데이터 그룹 3가지 : List, Set, Map
- List 인터페이스 구현 클래스 4가지: ArrayList, LinkedList, Stack, Vector
- 여기서 대표적으로 많이 사용되는 ArrayList와 LinkedList를 비교하고자 함
List 인터페이스 공통점
- 값의 중복을 허용하며 저장순서가 유지된다는 공통점이 있음
ArrayList
- 기존 Vector 클래스를 개선한 클래스로, 구현원리와 기능은 동일하나 가급적 ArrayList를 사용하는 것이 좋음
- Object 타입으로 선언되어 모든 종류의 객체가 사용가능함
- 이름에서도 알 수 있듯 배열과 유사한 구조를 가지며, 내용 추가/삭제/정렬 등의 메서드를 제공함
- 데이터의 추가와 읽기에는 유리하나 용량변경 시 처리시간이 길기 때문에 여유있게 크기를 지정하는 것이 좋음
- 순차적인 데이터의 추가와, 마지막 데이터 삭제에서는 유리하나, 중간에서의 데이터 추가/삭제에는 불리함
LinkedList
- 불연속적인 데이터(노드)를 서로 연결한 형태로 구성되어 있음
- 단일, 이중, 이중 원형 연결리스트
1. 단일 연결리스트 (singly linked list)
- 노드의 구성
1) 다음 노드의 주소값, 2) 데이터
- 데이터의 추가와 삭제에서 유리하다
2. 이중 연결리스트 (doubly linked list) - 가장 많이 사용
- 단뱡향 데이터 접근의 문제점을 해결
- 이중 연결 리스트 노드의 구성
1) 다음 노드의 주소값, 2) 이전 노드의 주소값, 3) 데이터
3. 이중 원형 연결리스트 (doubly circular linked list)
- 이중 연결리스트에서 마지막 노드와 처음 노드를 연결하여 순환이 가능하도록 한 것
결론
- 데이터 읽기에는 ArrayList가, 추가/삭제에는 LinkedList가 유리한 편임
- 순차적인 데이터 추가/삭제에는 ArrayList가 LinkedList에 비해 유리함
- 중간부분에서의 데이터 추가/삭제 시에는 LinkedList가 ArrayList에 비해 유리함
'개발지식 > 자료구조' 카테고리의 다른 글
[자료구조] 우선순위 큐 (priority queue) - 백준 1715번 (0) | 2022.02.05 |
---|---|
[자료구조] 배열(array)과 리스트(list) (0) | 2022.01.26 |