ki-sd 님의 블로그
[2026-04-02] 가변 크기 배열 ArrayList와 제네릭(Generics)의 안정성 본문
고정된 길이만 가질 수 있었던 배열의 구조적 한계를 완벽히 깨부수는 자바 컬렉션 프레임워크(Collection Framework)의 첫 주자를 다루었다.
1. ArrayList의 동적 크기 할당(Dynamic Sizing)
- ArrayList는 내부적으로는 일반 배열을 사용하지만, 데이터가 꽉 차면 자동으로 더 큰 새로운 배열을 내부에서 생성하고 기존 데이터를 복사해 옮기는 똑똑한 클래스다.
- 개발자는 배열의 크기를 신경 쓸 필요 없이 add(), remove() 등의 메서드만 호출하여 데이터를 무한히 늘리거나 중간에 삽입/삭제할 수 있는 엄청난 편리함을 경험했다.
2. 제네릭(Generics) - 타입의 명확화와 캐스팅 생략
- 컬렉션은 모든 객체의 최상위인 Object 타입으로 데이터를 저장하기 때문에 어떤 데이터든 다 넣을 수 있다는 장점이 있지만, 꺼낼 때 무슨 타입인지 몰라 런타임 에러(ClassCastException)가 발생할 위험이 높다.
- 이를 해결하기 위해 <String>, <Member>처럼 꺾쇠기호를 사용하는 제네릭을 도입했다. 컬렉션에 들어갈 데이터의 타입을 컴파일 단계에서 강제로 고정시킴으로써, 엉뚱한 데이터가 들어오는 것을 사전에 차단하고 데이터를 꺼낼 때 매번 강제 형변환(Casting)을 해야 하는 수고로움을 완벽히 제거하는 타입 안정성(Type Safety)을 체감했다.
'JavaStudy' 카테고리의 다른 글
| [2026-04-06] 람다식(Lambda)과 스트림(Stream) API를 통한 함수형 프로그래밍 (0) | 2026.04.17 |
|---|---|
| [2026-04-03] Set과 Map의 논리적 구조와 중복 제어 (0) | 2026.04.17 |
| [2026-04-01] 리플렉션(Reflection)과 메타 프로그래밍의 기초 (0) | 2026.04.17 |
| [2026-03-31] Wrapper 클래스와 시간 API 처리에 대한 고찰 (0) | 2026.04.17 |
| [2026-03-30] java.lang 패키지 분석과 데이터 영속성(Persistence)의 경험 (1) | 2026.04.17 |
