Java ‐ 컬렉션 프레임워크(List) - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 리스트 추상화
- List 자료구조 : 순서가 있고 중복을 허용하는 자료 구조
❓의존 관계 주입
적절한 추상화를 사용하여 추상화된 인터페이스에 의존하는 것을 말한다. 생성자를 통한 의존관계 주입, 수정자를 통한 의존관계 주입 등이 있는데 수정자의 경우 변경의 여지가 있어 안전하지 않다.
final
필드를 사용하고 생성자를 통해 최초에 생성 시 초기화를 해주게 되면 불변으로 의존관계를 주입할 수 있게 된다.
📚 컴파일 타임, 런타임 의존관계
- 컴파일 타임 : 코드 컴파일 시점
- 런타임 : 프로그램 실행 시점
- 컴파일 타임 의존관계는 자바 컴파일러가 보는 의존관계이다. 클래스에 모든 의존관계가 다 나타난다.
- 런타임 의존관계는 실제 프로그램이 작동할 때 보이는 의존관계이다. 주로 생성된 인스턴스와 그것을 참조하는 의존관계이다.
- 런타임 의존관계는 프로그램이 실행될 때 계속 변할 수 있다.
❓전략 패턴(Strategy Pattern)
전략 패턴은 알고리즘을 클라리언트 코드의 변경 없이 쉽게 교체할 수 있다.
List
인터페이스가 바로 전략을 정의하는 인터페이스가 되고 각각의 구현체인ArrayList
,LinkedList
가 전략의 구체적인 구현이 된다. 그리고 전략을 클라이언트 코드의 변경없이 손쉽게 교체할 수 있다.
📚 자바 리스트
- List 자료구조 : 순서가 있고 중복을 허용하는 자료 구조를 말한다.
- 자바의 컬렉션 프레임워크가 제공하는 대표적인 자료 구조로 아래와 같은 구조를 가진다.
-
자바 ArrayList
- 배열을 사용해서 데이터를 관리한다.
- 기본 CAPACITY는 10이다.
- 메모리 고속 복사 연산을 사용한다.
- ArrayList의 경우 앞이나 뒤에 데이터를 추가하면 해당 데이터 이후의 데이터들을 이동시켜야 한다.
- 자바가 제공하는 ArrayList의 경우 이 부분을 최적화해주는데, 배열의 요소 이동은 시스템 레벨에서 최적화된 메모리 고속 복사 연산을 사용해서 비교적 빠르게 수행된다.
-
자바 LinkedList
- 자바의 LinkedList는 이중 연결 구조를 사용한다.
- 이 구조는 다음 노드 뿐만 아니라 이전 노드로도 이동이 가능하다.