컬렉션
여러 객체(데이터)를 모아놓은 것을 의미
프레임웍
표준화 정형화된 체계적인 프로그래밍 방식
컬렉션 프레임웍
컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식
컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공
java.util 패키지에 포함
1. List
순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.
구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
2. Set
순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다.
구현 클래스 : HashSet, TreeSet 등
3. Map
키와 값의 쌍으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
구현 클래스 : HashMap, TreeMap, HashTable, Propertise 등
ArrayList
ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일
ArrayList와 달리 Vector는 자체적으로 동기화 처리가 되어있다.
List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.
데이터의 저장공간으로 배열을 사용한다.
ArrayList에 저장된 객체의 삭제과정
- 삭제할 데이터 아래의 데이터를 한 칸씩 위로 복사해서 삭제할 데이터를 덮어쓴다.
- 데이터가 모두 한 칸씩 이동했으므로 마지막 데이터는 null로 변경한다.
- 데이터가 삭제되어 데이터의 개수가 줄었으므로 size를 감소시킨다.
배열의 장점
배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간이 짧다
배열의 단점
크기를 변경할 수 없다. 크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야 함
비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.
LinkedList
배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결
데이터의 삭제 : 단 한 번의 참조 변경만으로 가능
데이터의 추가 : 한 번의 Node객체 생성과 두 번의 참조 변경만으로 가능
순차적으로 데이터 추가/삭제 : ArrayList가 빠름
비순차적으로 데이터 추가/삭제 : LinkedList가 빠름
접근 시간 : ArrayList가 빠름
Comparable : 기본 정렬 기준을 구현하는데 사용
Comparator : 기본 정렬기준 외의 다른 기준으로 정렬하고자 할 때 사용
compare()와 compareTo()는 두 개체의 비교 결과를 반환하도록 작성
HashSet
set인터페이스를 구현한 대표적인 컬렉션 클래스
순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다.
TreeSet
범위 검색과 정렬에 유리한 컬렉션 클래스
HashSet보다 데이터 추가, 삭제에 시간이 더 걸림
'개발 > Java' 카테고리의 다른 글
자바의 정석 - 기초편 [열거형 ~ sleep(), interrupt()] (0) | 2022.07.15 |
---|---|
자바의 정석 - 기초편 [HashSet(2) ~ 제네릭] (0) | 2022.07.13 |
자바의 정석 - 기초편 [연결된예외 ~ 래퍼클래스] (0) | 2022.07.11 |
자바의 정석 - 기초편 [인터페이스와 다형성 ~ 사용자정의예외 만들기, 예외 되던지기] (0) | 2022.07.07 |
자바의 정석 - 기초편 [제어자 ~ 인터페이스의 선언, 상속, 구현] (0) | 2022.07.06 |