1. 컬렉션 프레임워크란 ?
1. 컬렉션 프레임워크는 데이터 그룹을 저장하는 클래스들을 표준화한 설계이다.
2. 객체지향적이고 재사용성이 높은 코드를 작성할 수 있도록 도와준다.
3. List, Set, Queue, Map등의 인터페이스를 제공한다.
2. 컬렉션 프레임워크 계층 구조
3. 컬렉션 프레임워크 주요 클래스 정리
1. 리스트(List)
1. 저장순서가 유지되고 중복 저장을 허용한다.
2. 리스트와 배열의 큰 차이는 리스트는 자료형 크기가 고정이 아닌 데이터 양에 따라 늘어난다.
3. 요소 사이에 빈 공간을 허용하지 않아 삽입/삭제 할 때마다 배열 이동이 일어남.
- ArrayList
- 배열을 이용해서 만든 리스트
- 배열의 크기는 자동으로 조정되고 배열의 크기가 초과되면 자동으로 확장된다.
- 단방향 포인터 구조로 인덱스를 사용해 조회가 빠르다.
- 특정 원소 조회를 할 때 사용하는 것이 좋다.
- 중복을 허용한다.
- LinkedList
- 이중 연결 리스트를 기반으로 데이터를 저장하는 클래스
- 특정 원소를 조회하는 경우 ArrayList보다 느리다.
- 삽입/삭제가 많을 때 사용하는 것이 좋다.
- 중복을 허용한다.
- Vector
- ArrayList와 비슷하게 배열로 만들어진 리스트이고 과거에 대용량 처리를 담당
- 비교적 성능이 좋지않고 무거워서 잘 쓰이지않는다.
- Thread-safe하다는 특징을 가지고있다.
2. 스택(Stack) & 큐(Queue)
- Stack
- 후입선출(LIFO) 원칙에 따라 요소를 저장하는 자료구조
- 마지막에 저장된 데이터가 가장 먼저 꺼내지는 형태이다.
- Queue
- 선입선출(FIFO) 방식을 따라 요소를 저장하는 자료구조
- 먼저 저장된 데이터가 먼저 꺼내지는 형태이다.
3. 집합(Set)
1. 데이터의 중복을 허용하지 않고 순서를 유지하지 않는 데이터 리스트
2. 중복 저장이 불가능하기 때문에 null값도 하나만 저장할 수 있다.
3. 순서가 없으므로 get() 메서드도 존재하지 않는다.
- HashSet
- 가장 빠른 임의 접근 속도를 가진다.
- 순서를 가지지 않는다.
- LinkedHashSet
- 순서를 가지는 Set 자료
- 저장된 순서를 유지하고 싶다면 HashSet 대신 LinkedHashSet을 사용하자.
- TreeSet
- 중복을 허용하지 않고, 순서를 가지지 않는다.
- 데이터를 정렬하여 저장하는 것이 특징이다.
4. 맵(Map)
1. 키(Key)와 값(Value)로 이루어진 데이터 집합
2. 값(Value)는 중복 저장되지만, 키(Key)는 해당 Map에서 중복되면 안된다.
3. 저장 순서가 유지 되지 않는다.
- HashMap
- 키와 값을 가지고 순서를 보장하지 않는다.
- 키와 값에 null이 허용된다.
- 비동기방식으로 작동하기 때문에 멀티 쓰레드 환경에선 사용하지 않는다.
- LinkedHashMap
- 데이터의 순서를 보장하고 들어온 순서대로 순서를 가진다.
- TreeMap
- Key값을 기준으로 정렬되는 특징을 가지고 있다.
- 키와 값을 저장하는 동시에 정렬 하기 때문에 저장시간이 오래 걸린다.
- 정렬되는 순서는 숫자 → 알파벳 대문자 → 알파벳 소문자 → 한글 순이다.
- HashTable
- HashMap보다 느리지만 동기화 지원이 된다.
- 키와 값으로 null 이 허용 되지 않는다.
'Java' 카테고리의 다른 글
[Java] JSON 객체 다루기(JSONObject, JSONArray) (0) | 2024.08.02 |
---|---|
[Java] ArrayList 내부 구조 파헤치기(크기, 메모리 구조, 내부 동작 과정) (0) | 2024.07.30 |
[Java] 클래스 란? (0) | 2024.06.11 |
[Java] 자바(Java) 의 특징 (0) | 2024.06.04 |
[Java] JVM(Java Virtual Machine)의 동작 과정 간단정리 (0) | 2024.06.03 |