리스트 추상화
List 자료 구조
MyArrayList와 MyLinkedList는 내부 구현만 다를 뿐 닽은 기능을 제공하는 리스트
>> 공통 기능을 인터페이스로 뽑아서 추상화하면 다형성을 활용한 다양한 이득
컴파일 타임 의존관계
자바 컴파일러가 보는 의존관계, 클래스에 모든 의존관계가 다 나타남
>> 클래스에 바로 보이는 의존관계
런타임 의존관계
실제 프로그램이 작동할 떄 보이는 의존관계, 생성된 인스턴스와 그것을 참조하는 의존관계
>> 프로그램이 실행될 때 인스턴스 간의 의존관계
>> 프로그램 실행 중에 계속 변할 수 있음
생성자를 통해 런타임 의존관계를 주입하는 것을 생성자 의존관계 주입 또는 생성자 주입
클라이언트 클래스는 컴파일 타임에 추상적인 것에 의존, 런타임에 의존 관계 주입을 통해 구현체를 주입받아 사용
자바 리스트
Collection 인터페이스 : 다양한 컬렉션, 즉 데이터 그룹을 다루기 위한 메서드 정의
>> List, Set, Queue와 같은 다양한 하위 인터페이스와 함께 사용
List 인터페이스 : 객체들의 순서가 있는 컬렉션을 나타내며 같은 객체의 중복 저장을 허용
>> 배열과 비슷하지만, 크기가 동적으로 변화하는 컬렉션을 다룰 때 유연하게 사용
자바 ArrayList
배열을 사용해서 데이터 관리
기본 CAPACITY 10 : CAPACITY를 넘어가면 50% 증가
메모리 고속 복사 연산
시스템 레벨에서 배열을 한 번에 아주 빠르게 복사
>> 한 칸씩 이동하는 방식과 비교하면 수 배이상의 빠른 성능
자바 LinkedList
첫 번째 노드와 마지막 노드 둘다 참조
이중 연결 리스트
다음 노드 뿐만 아니라 이전 노드로도 이동 가능
마지막 노드에 대한 참조 제공
>> 데이터를 마지막에 추가하는 경우에도 O(1)의 성능
역방향으로 조회 가능
>> 인덱스 조회 성능 최적화
'Java' 카테고리의 다른 글
Java / 컬렉션 프레임워크 - HashSet (0) | 2025.03.08 |
---|---|
Java / 컬렉션 프레임워크 - Hash (0) | 2025.03.08 |
Java / 컬렉션 프레임워크 - LinkedList (0) | 2025.03.04 |
Java / 컬렉션 프레임워크 - ArrayList (0) | 2025.03.04 |
Java / 제네릭(Generic) 2 (0) | 2025.03.04 |