카테고리 없음

20240827 11일차

happyst 2024. 8. 27. 17:24

[Generic]
- 데이터 타입을 일반화(generalize)하는 기능을 제공
- 클래스, 인터페이스, 메서드를 데이터 타입에 상관없이 재사용할 수 있음
- 실제 사용 시에는 구체적인 타입이 결정되어야 하지만, 설계할 때는 구체적 타입을 언급하지 않음
  * public class ArrayList<E> extends AbstractList<E>

- 타입 안정성 제공: 컴파일 시 타입을 점검하기 때문에 런타임 오류 사전 방지
- 타입체크 및 형변환 생략: 불필요한 타입 변환이 없으므로 코드가 간결해지고 프로그램 성능이 향상됨

- Generic 타입 매개변수를 Object라고 설정하면, 매번 타입 체크를 해줘야되기 때문에 불편함

- Generic 타입에 대한 범위 제한
  * 모든 타입으로 대체할 수 없고, 특정 타입과 자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 매개변수
  * 사용법: <T extends 상위타입 클래스/인터페이스> [return type] method이름 (params ...) { ... }



[Collection Framework]
- Collection Framework: 객체를 한 곳에 모아 효율적으로 관리하고 편리하게 사용할 수 있도록 제공하는 환경
- interface, class로 구성
  * interface: collection에서 수행할 수 있는 각종 연산을 generic 타입으로 정의하여 유사 클래스에 일관성 있게 접근하게 함
  * class: collection framework interface를 구현한 클래스
  * java.util 패키지에 포함

[List]
- new ArrayList<>()
  * add, remove, set O
- Arrays.asList( )
  * add, remove: O / set: X
- List.of( ) : 정적 팩토리 메서드
  * 불변성이므로 add, remove, set X

[Stack]
- search() 메서드
  * 스택의 맨 위를 기준으로 1부터 시작하는 위치를 반환
  * 반환되는 값은 인덱스가 아닌 위치
  * 인덱스는 0부터 시작하지만, search()의 위치는 1부터 시작함

[LinkedList]
- 이중 연결 리스트로 구현됨