List.size

List에 저장된 원소 개수를 반환합니다.

시그니처

int size()

동작 추적

List<Integer> list = new ArrayList<>();
[ 초기 상태 ]
list: []
size = 0
list.add(10);
list.add(20);
list.add(30);
[ 상태 ]
list: [10, 20, 30]
size = 3
list.remove(0);
[ 상태 ]
list: [20, 30]
size = 2

size() vs capacity

[ ArrayList의 size와 capacity는 다름 ]

내부 배열: [10 | 20 | 30 | _ | _ | _ | _ | _ | _ | _]
              0    1    2  3  4  5  6  7  8  9
                                   ↑ 빈 공간들

size = 3        ← 실제 들어있는 원소 수 (외부에서 봄)
capacity = 10   ← 내부 배열 크기 (외부에서 직접 못 봄)

size()는 항상 실제 원소 수를 반환. capacity는 ArrayList 내부 구현 상세.

자주 쓰는 패턴

for문 순회

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

매 반복마다 size()를 호출하지만 O(1)이라 성능 손실 거의 없음. 가독성 우선.

끝 원소 접근

list.get(list.size() - 1);   // 마지막 원소

빈 List 처리

if (list.size() == 0) { ... }   // X 의도가 덜 명확
if (list.isEmpty())   { ... }   // O 권장 — List.isEmpty

결과 배열 생성

ArrayList<Integer> list = new ArrayList<>();
// ... 데이터 누적

int[] answer = new int[list.size()];   // 정확한 크기로 배열 생성
for (int i = 0; i < list.size(); i++) {
    answer[i] = list.get(i);
}

시간복잡도

연산복잡도
size()O(1) — 내부 카운터 유지

ArrayList, LinkedList 모두 O(1). 별도 카운터 변수를 두어 매번 세지 않음.

CSLOG에서 보기