ArrayList vs LinkedList

2022. 2. 23. 18:33·Programming/Java

모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을 뿐 내부적으로 동작하는 방식은 다르다.

 

ArrayList

- 내부적으로 데이터를 관리.

- 데이터 추가/ 삭제를 위해 임시 배열을 생성해 데이터를 복사

- 인덱스 기반 자료구조이기 때문에 검색에 유리

- 대량의 자료를 추가/삭제 하는 경우 그만큼 데이터의 복사-> 성능 저하

 

LinkedList

- 데이터를 저장하는 각 노드는 이전 노드와 다음 노드 상태만 알고 있다. 

- 추가/ 삭제 시 불필요한 데이터 복사가 없어 데이터 추가/ 삭제에 유리

- 검색 시, 인덱스가 없기 때문에 처음부터 노드 순회-> 성능 저하


데이터 검색, 삽입, 삭제 시 성능 비교

검색

- ArrayList: O(1). 인덱스 기반 자료구조

- LinkedList: 최악의 경우, O(N)

 

삽입, 삭제

- ArrayList: 최악의 경우, O(N)

- LinkedList: O(1). 이전 노드, 다음 노드를 참조하는 상태만 변경하면 됨.

'Programming > Java' 카테고리의 다른 글

SOLID, 객체 지향 설계 원칙  (0) 2022.02.25
업캐스팅, 다운캐스팅  (0) 2022.02.23
Collections.sort()  (0) 2022.02.23
Wildcard <?>  (0) 2022.02.22
Generic Method (Basic)  (0) 2022.02.22
'Programming/Java' 카테고리의 다른 글
  • SOLID, 객체 지향 설계 원칙
  • 업캐스팅, 다운캐스팅
  • Collections.sort()
  • Wildcard <?>
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (208)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (13)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Reorder List
    준영속 엔티티
    minimum number of arrows to burst balloons
    Thread
    OS
    fcfs
    Process
    clone graph
    디자인 패턴
    wildcards
    algorithm
    JSCode
    pacific atlantic water flow
    Generic
    Climbing Stairs
    @JsonProperty
    AuthenticationSuccessHandler
    @JsonNaming
    LinkedList
    제네릭
    rotting oranges
    운영체제
    Oauth2
    runner 기법
    RR
    트랜잭션
    socar
    추상화 클래스
    BFS
    lower bounded wildcards
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
ArrayList vs LinkedList

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.