Post

[java] ArrayList vs LinkedList



🔍 ArrayList vs LinkedList

Java의 List 인터페이스를 구현한 대표적인 두 클래스인 ArrayListLinkedList는 내부 구조와 성능 특성이 다릅니다. 사용 목적에 따라 적절히 선택하는 것이 중요합니다.


📌 차이점 요약

항목ArrayListLinkedList
저장 구조배열 기반 (index로 직접 접근)노드 연결 기반 (각 노드가 이전/다음을 참조)
접근 속도빠름 (O(1), index 접근)느림 (O(n), 앞에서부터 순차 접근)
삽입/삭제 속도느림 (중간 삽입/삭제 시 shift 필요)빠름 (노드 포인터만 변경)
메모리 사용량적음많음 (데이터 + 포인터 정보 저장)
순차 접근빠름빠름
중간 수정느림빠름



🧪 예시 코드

✅ ArrayList 예제

1
2
3
4
5
6
7
8
import java.util.ArrayList;

ArrayList<String> arr = new ArrayList<>();
arr.add("a");
arr.add("b");
arr.add("c");

System.out.println(arr.get(1)); // "b"

✔️ get(index)로 빠른 접근 가능
❌ 중간 삽입/삭제 시 다른 요소를 이동시켜야 해서 느림



✅ LinkedList 예제

1
2
3
4
5
6
7
8
import java.util.LinkedList;

LinkedList<String> list = new LinkedList<>();
list.add("a");
list.add("b");
list.add("c");

list.add(1, "x"); // 중간 삽입

❌ 인덱스 접근은 느림 (앞에서부터 찾아야 함)
✔️ 삽입/삭제는 빠름 (포인터만 조정하면 됨)

🤔 어떤 걸 써야 할까?
상황 추천 자료구조

  • 데이터를 자주 읽고 접근해야 함 ArrayList 👍
  • 데이터를 자주 삽입/삭제함 LinkedList 👍
  • 전체 순회만 필요한 경우 둘 다 가능 ✅
This post is licensed under CC BY 4.0 by the author.
3D GIF

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?