“컬렉션 : 여러 개의 객체(데이터의 집합)를 모아둔 것”
“정해진 방법 대로 컬렉션을 관리·조작·사용한다.”
“컬렉션(객체의 모음·저장)를 다루기 위한 프레임워크(표준화된 프로그래밍 방식)”
“컬렉션(다수의 객체, 여기서 ’객체’는 ’다수의 데이터’ 즉, 객체의 저장을 의미)을 쉽고 편리하게 다룰 수 있는 다양한 클래스(이를 컬렉션 클래스라 부르며, 여기서 클래스란, 객체를 위한, 속성 및 기능 설계도라 생각하면 된다.)를 제공한다. 객체를 다룬다는 것은 객체를 저장, 삭제, 검색, 정렬 등을 하는 작업을 의미한다. 방대한 데이터(객체)를 다루기란 쉽지 않으므로 타입별로 그룹을 나누어 컬렉션 프레임워크에서 제공하는 기능을 이용하여 관리한다.”
“자바의 컬렉션 프레임워크는 java.util 패키지에 포함되어 있다.”
“자바는 널리 알려져 있는 자료구조(Data Structure)를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.utill 패키지에서 제공한다. 다시 말해, 컬렉션 프레임워크는 사용 방법을 정의한 인터페이스와 실제 객체를 저장하는 다양한 컬렉션 클래스(구현 클래스)를 제공한다.”
CF. 자바의 컬렉션 프레임워크와 배열의 차이점 : 배열은 선언 시 정한 크기(저장 용량)를 변경할 수 없고, 항목을 저장, 삭제, 추가하는 메소드가 없어 인덱스를 사용해야 한다. 이러한 불편함을 해결하기 위해 자바는 컬렉션 프레임워크를 제공한다. 컬렉션 프레임워크는 배열과 달리, 참조 타입의 일종인 클래스 타입의 배열도 만들 수 있어 객체 저장소로 사용될 수 있다.
CF. Java API 문서에서의 컬렉션 프레임워크의 정의 : 데이터 군(group)을 다루고 표현하기 위한 단일화된 구조
<aside> ✅ 컬렉션 프레임워크(Collection Framwork)의 장점
<aside> ✅ 컬렉션(Collection)
배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 가지고 있는 자료구조를 제공한다. 이러한 컬렉션은 배열과 달리 크기가 자동조정 즉, 크기를 몰라도 사용가능한 특징이 있다.
<aside> ✅ 컬렉션의 특징
</aside>
<aside> ✅ 컬렉 프레임워크가 인식하는 인터페이스와 구현클래스 : 컬렉션의 종류
<aside>
✅ Collection 인터페이스
“List와 Set 인터페이스의 조상 인터페이스”
“List와 Set 인터페이스의 공통된 부분을 뽑아 만든 새로운 인터페이스”
“컬렉션 프레임워크가 제공하는 구현클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 등, 컬렉션을 다루는 가장 기본적인 메서드를 정의하는 인터페이스”
Collection 인터페이스가 제공하는 메소드
boolean add(Object o) //지정한 객체(o)를 컬렉션에 추가
boolean addAll(Collenction c) //지정한 컬렉션(c)의 객체를 컬렉션에 추가
void clear() //컬렉션의 모든 객체 삭제
boolean remove(Ojbect o) //지정한 객체 삭제
boolean removeAll(Collection c)
boolean contains(Object o) //지정한 객체가 컬렉션에 있는지 확인
boolean containsAll(Collection c)
boolean isEmpty()
boolean retainAll(Collection c) //지정한 컬렉션에 포함된 객체만을 남기고 다른 객체들 모두 컬레션에서 삭제 후, 컬렉션에 변화가 생겼는지 확인
boolean equals(Object o) //동일한 컬렉션인지 비교
int hashCode() //컬렉션의 hash code를 얻어서 반환
Iterator iterator() //컬렉션의 iterator를 얻어서 반환
int size() //컬렉션에 저장된 객체의 개수를 얻어서 반환
Object[] toArray() //컬렉션에 저장된 객체를 객체배열로 반환
Object[] toArray(Object[] a) //지정한 배열에 컬렉션의 객체를 저장해서 반환
</aside>
<aside>
✅ List 인터페이스
데이터의 중복을 허용하며 순서가 있는 데이터의 집합
생성 시점에 메모리에서 연속된 공간을 요청한만큼 처음에 정적으로 받아 참형 변수로 데이터를 저장한다.
값이 추가될 때는 더 큰 공간이 필요하면 메모리로부터 더 큰 공간을 받아 저장한다.
List 인터페이스가 제공하는 메소드
void add(int index, Object element) //지정한 위치(index)에 객체(o)를 컬렉션에 추가
boolean addAll(int index, Collenction c)
Object get(int index) //지정한 위치에 있는 객체를 얻어서 반환
Object remove(int index) //지정한 위치에 있는 객체를 삭제하고, 삭제한 객체를 얻어서 반환
<aside> ✅ List 인터페이스에 대한 구현클래스의 종류
ArrayList
</aside>
<aside>
✅ Set 인터페이스
: “집합” 순서가 없고 중복없는 데이터의 집합
<aside> ✅ Set 인터페이스에 대한 구현클래스의 종류
</aside>
<aside>
✅ Map
: 순서가 없는 (Key, Value) 쌍으로 이루어진 데이터의 집합으로 Key 값은 중복을 허용하지 않는 고유한 값이다.
Map 인터페이스가 제공하는 메소드
<aside> ✅ Map 인터페이스에 대한 구현클래스의 종류
</aside>
<aside>
✅ Queue
: “FIFO” 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합
</aside>
</aside>
<aside> ✅ java.util.List 인터페이스를 구현한 컬렉션
<aside> ✅ Vector 클래스
배열과 달리, 여러 데이터를 저장하는 데에 있어서 가변 크기로 설정할 수 있으며 요소의 개수에 따라 자동으로 크기를 조절한다.
Vector 클래스가 제공하는 메소드
add() //벡터의 끝이나 중간에 요소 삽입 가능
get(인덱스) //벡터의 인덱스(요소)에 접근
size() //몇 개의 객체를 담았는지 확인
remove(인덱스 번호/요소명) //해당 요소를 삭제
clear() //모든 값 삭제
</aside>
</aside>