ArrayList

JongHwa Hong·2023년 8월 2일

자료구조

목록 보기
2/2

ArrayList란?


  • 기존 배열만으로는 자료를 담고 관리하는게 불편함이 있어 만들어짐
  • 기본 배열의 상위 호환 느낌

ArrayList 특징


  • 연속적인 데이터의 리스트 (중간에 빈 공간이 있어서는 안된다.)
  • 내부적으로 Object[] 배열을 이용하여 데이터를 저장
  • 요소에 빠르게 접근 가능하다.
  • 데이터 적재량에 따라 가변적으로 공간을 늘리거나 줄인다.
  • 공간이 꽉 찰때마다 배열을 copy 하는 방식으로 공간을 늘려, 지연이 발생한다.
  • 데이터를 리스트 중간에 삽입/삭제 할 경우, 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 자동으로 이동시키기 때문에 삽입/삭제 동작은 느리다.
  • 따라서, 조회를 많이 하는 경우에 사용하는 것이 좋다.

ArrayList vs Arrays

Arrays


  • 정적 할당 (처음 선언한 크기에서 변경 불가)
  • 데이터 크기가 정해져있을 경우 메모리 관리 용이
  • 메모리에 연속적으로 할당되어 index를 통한 접근 속도가 빠르다.
  • 중간 데이터를 삭제하더라도 해당 index는 빈 공간으로 남아 있는다.
  • 동적인 상황에서는 메모리 관리가 용이하지 못하다.
  • primitive type 저장 가능

ArrayList


  • 동적 할당 (크기가 가변적으로 변함)
  • 메모리에 주소로 연결되어 있는 형태이기 때문에 배열에 비해 index를 통한 접근 속도가 느리다.
  • 데이터 사이에 빈 공간을 허용하지 않는다.
  • 객체로 데이터를 저장하기 때문에, 적은양의 데이터를 사용하는 경우 메모리가 비교적 커짐
  • primitive type 저장 불가능. Object만 저장 가능하다.

LinkedList vs ArrayList 특징 비교

ArrayListLinkedList
컬렉션 구성배열을 이용노드를 연결 (linked)
데이터 접근 시간모든 데이터 상수 시간 접근위치에 따라 이동시간 발생
삽입 / 삭제 시간삽입/삭제 자체는 상수 시간
삽입/삭제 시 데이터 이동이 필요한 경우 추가시간 발생삽입/삭제 위치에 따라 그 위치까지 이동하는 시간 발생
리사이징 필요공간이 부족할경우 새로운 배열에 복사하는 추가 시간 발생-
데이터 검색최악의 경우 리스트에 있는 아이템 수 만큼 확인
CPU Cache캐시 이점을 활용-
profile
서버 개발자 홍종화 입니다.

0개의 댓글