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
contains
- 해당 원소의 index가 존재한다면 리스트에 존재한다는 뜻입니다.
indexOf
- o와 i번째 값이 동일하다면 그 때의 i가 인덱스 입니다
null
의 인덱스를 찾는 방법은 equals가 아닌 ==null 입니다
- 인덱스가 없다면 -1을 반환합니다
기타
- ArrayList도 결국 태생이
배열
입니다.
- 길이가 가변적인것 같아 보이지만 내부적에서 고정적인 길이를 수동적으로 바꿔줄 뿐입니다.