[java] 컬렉션 프레임웍(Collections Framework)
- 컬렉션(collection)
:여러 객체(데이터)를 모아 놓은 것을 의미
- 프레임웍(framework)
: 표준화, 정형화된 체계적인 프로그램이 방식
- 컬렉션 프레임웍(collections framework)
: 컬렉션(다수의 객체)를 다루기 위한 표준화된 프로그래밍 방식
: 컬렉션을 쉽고 편리하게 다룰 수 있는 다양나 클래스를 제공
: java.util패키지에 포함. JDK 1.2부터 제공
- 컬렉션 클래스(collection class)
: 다수의 데이터를 저장할 수 잇는 클래스 예) Vector, ArrayList, HashSet
=> 데이터들이 새롭게 추가되거나, 삭제되거나, 수정이 되는 기능(알고리즘) 들이 이미 정의 되어있는 틀 == 컬렉션
3가지 종류의 컬렉션
* - List 계열 : 담고자 하는 값(Value)만 저장 / 저장 시 순서 유지(index)
* 중복값 허용
* 예) ArrayList, LinkedList, Vector
* ArrayList가 가장 많이 쓰인다.
* - Set 계열 : 담고자 하는 값(Value)만 저장 / 저장 시 순서유지 X
* 중복값 허용 X
* 예) HashSet, TreeSet
* - Map 계열 : 키(key) + 값(Value) 세트로 저장 / 저장 시 순서 유지 X
* 중복 키 허용 X / 중복 값 허용
* 예) HashMap, HashTable, TreeMap, ProPerties
배열과 컬렉션의 차이점
* - 배열의 단점
* 1. 한 타입의 데이터들만 저장 가능
* 2. 배열을 쓰고자 할 때 먼저 크기를 지정해야함
* => 한 번 지정된 크기는 변경이 불가능
* 새로운 값을 추가하고자 할 때 크기가 오버될 경우 새로운 크기의 배열을 만들고,
* 기존의 내용들을 복사하는 코드를 직접 짜야함
* 3. 배열 중간 위치에 새로운 데이터를 추가하거나 삭제하는 경우
* 기존의 값들을 땡겨주거나, 밀어주는 코드를 직접 짜야 함
*
* - 컬렉션의 장점
* 1. 기본적으로 여러 타입의 데이터들을 저장 가능
* => 같은 타입의 데이터들만 묶어서도 저장 가능
* (제네릭 설정을 통해 한타입의 데이터들만 묶을 수 있게끔도 가능)
* 2. 크기에 제약이 없다.
* => 굳이 크기 지정을 하지 않아도 된다.
* => 만약 내가 크기지어을 했고, 크기를 오버하는 값을 더 추가하고자 할 때
* 알아서 크기가 늘어난다.
* 3. 중간에 값을 추가하거나 삭제하는 경우 값을 땡겨주거나 밀어주는 코드가
* 이미 그메소드로 정의되어 있음
* => 그때그때 필요한 메소드들을 호출해서 쓰면 된다!!
*
* 방대한 데이터를 담아만 두고 "조회"만 할 목적 => 배열
* 방대한 데이터들이 추가, 수정, 삭제 될 경우 => 컬렉션
Collection 인터페이스의 메소드
추가 : 지정된 객체 또는 컬렉션의 객체들을 콜렉션에 추가한다.
- boolean add(Object o)
- boolean addAll(Collection c)
검색 : 지정된 객체 또는 컬렉션의 객체들이 컬렉션에 포함되어 있는지 확인
- boolean contains(Object o)
- boolean containsAll(Collection c)
- boolean isEmpty() : 컬렉션이 비어있는지 확인
삭제 : 지정된 객체를 삭제
- boolean remove(Object o)
- boolean removeAll(Collection c)
- boolean retainAll(Collection c)
- void clear() : 컬렉션의 모든 객체를 삭제
기타
- int size() : 컬렉션에 저장된 객체의 개수를 반환
- Object[] toArray() : 컬렉션에 저장된 객체를 객체배열(Object[])로 반환
- Object[] toArray(Object[] a) : 지정된 배열에 컬렉션의 객체를 저장해서 반환