제네릭(Generic)
- 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법
- 미리 정의된 하나의 메서드 또는 멤버 변수에 서로 다른 자료형의 결과를 얻을 수 있도록 하는 기능
- 컴파일 할 때 타입 체크를 통해 실행시 발생하는 타입에러를 사전에 방지.
불필요한 타입 변환(casting)을 안하므로 프로그램의 안전성 향상
컬렉션(Collection)
Set
- 순서가 없고, 중복을 허용하지 않는 자료구조
- 주요 구현 클래스 : HashSet
List
- 순서가 있는 요소들의 집합으로 배열과 같은 구조이나 가변적 길이를 가지고 있음.
Set 과 다르게 중복 요소 추가 가능
- 주요 구현 클래스 : Vector, ArrayList, LinkedList, Stack
Vector : 동기화 지원
ArrayList : 동기화 미지원
- 배열 구조. 데이터 추가/삭제 시 임시 배열을 생성해 데이터를 복사
- 대량의 자료를 추가/삭제 시 성능저하 발생 가능. 반면에 인덱스 참조가 가능해 검색에 유리
LinkedList
- 각 노드가 이전 노드와 다음 노드의 상태를 저장하는 방식
- ArrayList와 달리 임시 배열 생성후 데이터를 복사 하지 않아 추가/삭제 유리. 반대로 검색에서는 불리
Stack
- LIFO(Last In First Out) 구조를 가짐
- push() : 요소 삽입, pop() : 요소 반환 및 제거
Map
- key 와 value 값의 형식으로 구성. key는 Set으로 중복 허용하지 않음
- 중복 키 삽입할 경우 이전 데이터를 덮어 씀
- Iterator가 없음
- Entry는 키와 값의 한쌍(페어)
- 주요 구현 클래스 : Hashtable(동기화 지원), HashMap(동기화 미지원)
배열과 ArrayList 의 차이점
배열 : 요소 크기 변경 불가능, 배열 중간에 데이터 삽입 시 덮어쓰기가 됨
ArrayList : 가변 길이, 데이터 검색 유리. 단, 추가/삭제시에 성능 고려해야 함.
처음, 끝, 중간에 요소를 추가/삭제하는 기능 제공
Stack과 Queue
Stack
- 모든 작업이 한쪽 끝에서만 수행되는 선형 리스트. 한쪽 끝(TOP)에서만 요소를 삽입, 삭제
- 가장 마지막으로 들어온 요소가 우선순위 제거 대상
- LIFO(Last In First Out) 구조
Queue
- 삽입은 Rear, 제거는 Front에서 이루어짐
- 가장 먼저 들어온 요소가 우선순위 제거 대상
- FIFO(First In First Out) 구조
'Tech Interview > Java' 카테고리의 다른 글
람다식 (0) | 2023.02.07 |
---|---|
스레드와 동기화 (0) | 2023.02.06 |
예외 처리 (0) | 2023.02.04 |
자바 주요 클래스 (0) | 2023.02.03 |
객체 지향 (0) | 2023.02.01 |