Jeunwork space

Java 제네릭(Generic) | 자바 컬렉션 프레임워크 본문

Java

Java 제네릭(Generic) | 자바 컬렉션 프레임워크

jeunwork 2021. 4. 22. 17:40

제네릭 사용하는 이유

- 컴파일 시 타입을 정확하게 체크 하여 에러방지. 

- 제네릭 코드 사용해 타입을 국한하면 프로그램 성능을 향상 시킬 수 있다.

 

제네릭 사용법

- 제네릭 타입 : 타입을 인자(파라미터)로 가지는 클래스와 인터페이스

- 클래스나 인터페이스 이름 뒤에 < >부호가 붙고 사이에 타입인자 위치

- 타입인자는 주로 대문자 알파벳 한글자로 표현

- 제네릭 타입은 멀티 타입 파라미터 : 두 개 이상의 타입 파라미터 사용 가능하다.

와일드 카드

- 무슨 타입이든 들어갈 수 있다. 

- 주의사항: 와일드 카드 타입에 배치시킬 객체는 생성자를 꼭 써줘야한다!!

- 와일드 카드로 배치된 제네릭 타입은 객체 내부에서 최상위 객체(Object)로 인식된다. 

 

<?> : 모든 객체자료형에 대한 배치. 객체 내부의 모든 제네릭 타입은 Object로 인식

<?super 객체자료형> : 명시된 객체자료형 또는 객체자료형의 상위 객체들의 배치. 객체 내부의 모든 제네릭 타입은 Object로 인식

 

<?extends 객체자료형> : 명시된 객체자료형 또는 객체자료형으로부터 상속받는 하위 객체들의 배치. 객체 내부의 모든 제네릭 타입은 extends 다음에 명시된 객체자료형으로 인식한다.

 

자바 컬렉션 프레임워크

- 객체들을 한 곳에 모아 관리하고 그것을 편리하게 사용할 수 있도록 제공되는 환경. Container라고도 한다. 제네릭으로 되어있다.

 

- Collection : 검색, 조회, 정렬, 추가, 삭제(자료구조)와 같은 데이터를 관리할 수 있는 객체

 

- Framework : 특정 목적으로 사용하는 틀 

 

- Interface

 

 1. Collection Interface group : Set, List, Queue, Dequeue, SortedSet

 

 2. Map Interface group : Map, SortedMap,

 

 3. 기타 Interface group : Iterator, ListIterator, Concurrent

 

- class

 

 1. Collection interface group의 클래스 : ArrayList, LinkedList, PriorityQueue, HashSet, TreeSet, ArrayDeque

 

 2. Map Interface group의 클래스 : HashMap, TreeMap, LinkedHashMap

 

 3. 기타 Interface group의 클래스 : Concurrent

 

Set Interface

- set내에 저장되는 객체들은 특별한 기준에 맞춰서 정렬되지 않는다. 

- ex) HashSet, TreeSet 등

 하여 에러방지. 

 

HashSet 생성자 

List Interface

- 시작과 끝이 정해진 상태로 정렬되어 있는 요소들을 차례대로 꺼내서 쓴다. 

- 배열과 차이점 : 배열은 크기가 고정되어 있고, 컬렉션의 List 구조는 가변적 길이를 가진다

- List 구현 클래스

1. Stack

LIFO(Last In First Out) 인덱스 값은 1부터 시작한다. 

2. Vector

용량이 가변적으로 증가. 

 

Queue Interface

- FiFO(First In First Out) 

- LinkedList( ) 새로운 LinkedList 객체가 생성된다.

- LinkedList(Collection <?extends E>c) 전달된 컬렉션을 포함하는 LinkedList 객체가 생성된다. 

 

Map Interface
- Key와 Value 매핑하는 객체

- Key 값은 절대 중복될 수 없으며 각 Key는 1개의 Value만 매핑할 수 있다.

- Hashtable 

- HashMap

 

HashMap 

- Key와 Value를 하나의 쌍으로 저장되는 구조.

- 저장되는 Value와 Key가 null을 허용한다.

- 중복은 허용하지 않으므로 null을 가지는 Key가 두 개일 수 없다. 

- Hashtable에 비해 처리 속도가 빠르다.

'Java' 카테고리의 다른 글

Java Util 패키지 - Calendar 클래스  (0) 2021.04.29
Java generic 연습문제  (0) 2021.04.28
단언(Assertion)  (0) 2021.04.19
패키지 - 클래스 만들기 예제  (0) 2021.04.19
Java 패키지 선언, 사용방법, static imports문  (0) 2021.04.15
Comments