ArrayList 코드분석

최창효·2022년 1월 26일
0
post-thumbnail

ArrayList는

  • AbstractList를 상속받고 있으며 List, RandomAccess, Cloneable, Serializable을 implements하고 있습니다.


  • 생성자로 아무런 값을 넘기지 않았을 때에는 DEFAULTCAPACITY_EMPTY_ELEMENTDATA를 반환합니다. 이 값은 아무것도 담기지 않은 빈 배열{}입니다.

  • int를 포함한 생성자를 호출했을 때에는
    • int가 양수이면 해당 크기만큼의 배열을
    • int가 0이면 빈 배열을(EMPTY_ELEMENTDATA도 단순 {}입니다)
    • int가 음수면 에러를 발생시킵니다

Add(x)메서드는

list의 마지막 순서에 x를 추가해 주는 기능을 합니다.

  • ensureCapacityInternal을 통해 크기를 증가시킵니다
  • 크기를 증가시키는 방법은 grow를 사용합니다.

Remove메서드는

index번째 값을 지우는 기능을 합니다.

  • 해당 index의 값을 지우고
  • 뒤에 나머지 값을 앞으로 땡기고
  • 값이 빠져서 비게 된 뒷공간을 null로 채웁니다

size

  • add할 때마다 size는 ++되고, remove할 때마다 size는 --됩니다.

isempty

  • size가 0이면 비었다는 의미입니다

contains

  • 해당 원소의 index가 존재한다면 리스트에 존재한다는 뜻입니다.

indexOf

  • o와 i번째 값이 동일하다면 그 때의 i가 인덱스 입니다
  • null의 인덱스를 찾는 방법은 equals가 아닌 ==null 입니다
  • 인덱스가 없다면 -1을 반환합니다

기타

  • ArrayList도 결국 태생이 배열입니다.
    • 길이가 가변적인것 같아 보이지만 내부적에서 고정적인 길이를 수동적으로 바꿔줄 뿐입니다.
profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글