📚 오늘 공부한 내용
Java 컬렉션 프레임워크 - List
오늘은 Java 컬렉션 프레임워크의 List에 대해 깊이 있게 학습했다. 특히 리스트 추상화의 개념과 다형성을 활용한 설계 패턴에 대해 이해할 수 있었다.
리스트 추상화와 인터페이스
- MyList 인터페이스를 통해 ArrayList와 LinkedList의 공통 기능을 추상화
- 다형성을 활용하여 런타임에 구현체를 선택할 수 있는 유연성 확보
- OCP 원칙 적용으로 클라이언트 코드 변경 없이 알고리즘 교체 가능
의존관계 주입 (DI)
- 컴파일 타임 의존관계 vs 런타임 의존관계의 차이점 학습
- 생성자를 통한 의존관계 주입으로 코드의 유연성과 확장성 향상
- 전략 패턴(Strategy Pattern) 활용한 알고리즘 교체
ArrayList vs LinkedList 성능 비교
- ArrayList: 맨앞/맨뒤 삽입/삭제는 O(1)로 빠르지만, 중간은 O(N)이고 조회는 O(N)이다
- LinkedList: 조회가 O(1) (인덱스로 바로 접근)이지만 삽입/삭제는 O(N)이다 (자리를 미뤄야 하므로)
- 자바의 ArrayList는 메모리 고속 복사를 사용하여 성능 최적화
- LinkedList는 이중 연결 리스트 구조로 양방향 탐색 지원
자바 표준 라이브러리 특징
- ArrayList: 기본 capacity 10, 50% 확장, System.arraycopy() 사용
- LinkedList: 이중 연결 리스트, first/last 노드 참조, 최적화된 인덱스 조회
💡 실습 성과
재귀함수 관련 알고리즘 문제를 실제로 해결해보면서 이론을 실전에 적용할 수 있었다. 문제를 작은 단위로 분해하여 해결하는 재귀적 사고를 기를 수 있었던 뜻깊은 시간이었다.
🎯 느낀 점
자료구조와 알고리즘은 단순히 암기가 아닌 이해가 중요하다는 것을 다시 한번 느꼈다. 특히 재귀함수는 처음엔 어려웠지만, 반복 학습을 통해 점점 익숙해지고 있다.
'🧑💻Sparta' 카테고리의 다른 글
| TIL - Stack (09.21) (0) | 2025.09.23 |
|---|---|
| TIL - Map (09.20) (0) | 2025.09.23 |
| TIL - HashSet (09.19) (0) | 2025.09.23 |
| TIL - Java Hash (09.18) (0) | 2025.09.23 |
| TIL - Java LinkedList와 재귀함수 학습 (25.09.16) (0) | 2025.09.16 |