컬렉션 프레임워크(Collection framework)
여러 데이터를 효과적으로 처리할 수 있게 표준화된 방법을 제공하는 클래스의 집합
데이터를 저장하는 자료 구조 및 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현한 것
자바의 인터페이스를 사용하여 구현이 된다.
컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map 등이 있다.
List와 Set은 Collection 인터페이스에서 정의를 하지만
Map 인터페이스는 구조상의 차이로 인해 Collection 인터페이스와 다른 저장 방식을 가진다.
(Key, Value) Map에 대해서는 나중에 따로 다루도록 하겠다.
주요 인터페이스의 특징
List
순서가 있는 데이터의 집합
데이터의 중복을 허용
구현 클래스
Vector, ArrayList, LinkedList, Stack, Queue
Set
순서가 없는 데이터의 집합
데이터의 중복을 허용하지 않음
구현 클래스
HashSet, TreeSet
Map
키와 값의 한 쌍으로 이루어지는 데이터의 집합
순서가 없음
키는 중복을 허용하지 않지만 값은 중복을 허용함
구현 클래스
HashMap, TreeMap, Hashtable
이러한 인터페이스를 구현한 클래스를 컬렉션 클래스라고 한다.
컬렉션 프레임워크의 모든 컬렉션 클래스는 List, Set, Map 중 하나로 구현이 되어있다.
특히 List와 Set은 공통으로 Collection 인터페이스를 상속받기 때문에
Collection 인터페이스에서 공통으로 사용되는 메소드를 제공한다.
공통 메소드 예시
package Collection;
import java.util.ArrayList;
import java.util.List;
public class CollectionSample {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("자바");
// add : 해당 컬렉션에 요소를 추가함
list.add("C언어");
// 인덱스가 없을 경우 맨 뒤에서 추가
list.add("파이썬");
System.out.println(list);
// 출력 결과 [자바, C언어, 파이썬]
list.set(0, "C++");
// set : 원하는 인덱스에 값을 넣음(변경, replace)
System.out.println(list);
// 출력 결과 [C++, C언어, 파이썬]
list.add(1, "C#");
// 원하는 인덱스에 값을 넣음(추가)
System.out.println(list);
// 출력 결과 [C++, C#, C언어, 파이썬]
System.out.println(list.get(0));
// get : 해당 인덱스의 값을 가져옴
// 출력 결과 C++
list.remove(1);
// 해당 인덱스의 값을 삭제
System.out.println(list.get(1));
// 출력 결과 C언어
// 리스트는 빈 공간을 허용하지 않기 때문에
// 2번 인덱스의 파이썬이 이동하여 빈 공간을 메꾼다.
System.out.println(list.size());
// size : 해당 컬렉션의 요소의 개수를 구함
System.out.println(list.contains("자바"));
// contains : list 내에 포함이 되어 있는지 확인
// 있다면 true 없다면 false
System.out.println(list.isEmpty());
// isEmpty : 해당 list가 비어 있는지 확인
// 출력 결과 false
list.clear();
// clear : 해당 list의 모든 요소를 제거
System.out.println(list.isEmpty());
// 출력 결과 true
}
}
'JAVA' 카테고리의 다른 글
[JAVA] for문, 향상된 for문, for Each문 (0) | 2022.01.13 |
---|---|
[JAVA] Map - HashMap, TreeMap, LinkedHashMap (0) | 2022.01.12 |
[JAVA] Static Stack Heap 메모리 구조 (0) | 2022.01.06 |
[JAVA] Call by value와 Call by reference (0) | 2022.01.06 |
[JAVA] 정적 변수, 정적 메소드(Static) (0) | 2022.01.05 |