컬렉션 프레임워크(Collection Framework)
다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현
자료 구조
- 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미
- 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미
리스트(List)
1. ArrayList
- 데이터는 배열을 사용하여 관리
- 새로운 배열을 만들고 복사하여 배열크기를 변경하는 메서드들이 존재, 데이터 추가/삭제가 간단하며 사용이 쉬움
장점 : 데이터 접근 속도가 빠름(단, 데이터의 인덱스 번호를 알고 있는 경우)
단점 : 비 순차 데이터의 추가/삭제 속도가 느림
2. LinkedList
- 데이터는 Node 객체를 사용하여 관리
- 각 노드는 다음 노드의 주소값과 데이터로 구성됨
장점 : 데이터의 추가/삭제 속도가 빠름
단점 : 데이터 접근 속도가 느림(첫 번째 노드부터 순차적으로 검색을 해야 원하는 데이터를 찾을 수 있음)
3. Vector
장점 : ArrayList와 동일한 구조 + 동기화된 메서드로 구성되어 멀티 스레드 환경에서 안전하게 객체를 추가/삭제 가능
단점 : 하나의 스레드에서 Vector 객체를 점유하는 동안 다른 스레드는 추가/삭제가 불가능하여 속도가 느림
Set
HashSet
- 데이터 순서 없이 저장
- 데이터 중복 불가
TreeSet
- 데이터 오름차순 정렬하여 저장(이진 트리로 정렬된 상태로 요소 관리)
- 데이터 중복 불가
Map
HashMap
- 스레드를 고려하지 않아 Hashtable에 비해 추가/삭제 속도가 빠름
TreeMap
- Key 데이터 기준 오름차순 정렬하여 저장 (이진 트리로 정렬된 상태로 요소 관리)
Hashtable
- 동기화된 메서드로 구성되어 멀티 스레드 환경에서 안전하게 객체를 추가/삭제 가능
단점 : 하나의 스레드에서 Hashtable객체를 점유하는 동안 다른 스레드는 추가/삭제가 불가능하여 속도가 느림
'JAVA' 카테고리의 다른 글
자바(Java) - 스레드(Thread) (0) | 2022.01.20 |
---|---|
자바(Java) I/O 개념 (0) | 2022.01.20 |
자바 제네릭(Generics) (0) | 2022.01.19 |
자바 예외 처리 (0) | 2022.01.19 |
인터페이스 (0) | 2022.01.19 |