본문 바로가기

프로그래밍언어/JAVA

[JAVA] Collections Framework

반응형

1. 컬렉션 인터페이스

 

컬렉션 프레임워크에는 List, Set, Map 3개의 컬렉션 타입을 가지고 있다. 자바는 각각의 타입에 대한 인터페이스를 가지고 있으며, List 와 Set 타입의 공통점을 모아 상위의 Collection 인터페이스를 추가로 정의하였다.

 

인터페이스 특징
List 순서가  있는 데이터의 집합. 데이터의 중복을 허용한다.
- ArrayList, LinkedList, Stack, Vector 등
Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다.
- HashSet, TreeSet 등
Map key, value 의 형식으로 데이터 쌍을 저장하는 데이터 집합.
순서는 유지하지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
- HashMap, TreeMap, Hashtable, Properties 등

 

 

2. Collection 인터페이스

 

List 와 Set 의 조상인터페이스인 Collection 인터페이스에는 다음의 메서드들이 정의되어 있다.

 

메서드 설명
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체 (Object o), 또는 컬렉션 (Collection c) 의 객체들을 Collection 에 추가한다.
void clear() Collection 의 모든 객체를 삭제한다.
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체, 또는 컬렉션의 모든 객체가 현재 컬렉션에 모두 포함되어 있는지 확인한다.
boolean equals(Object o) 동일한 컬렉션인지 확인한다.
int hashCode() 컬렉션의 hash code 를 확인한다.
boolean isEmpty() 컬렉션이 비어있는지 확인한다.
Iterator iterator() 컬렉션의 iterator 를 반환한다.
boolean remove(Object o) 현재 컬랙션에서 지정된 객체 o를 삭제한다.
boolean removeAll(Collection c) 컬렉션 c에 포함되어 있는 모든 객체를 현재 컬렉션에서 삭제한다.
boolean retainAll(Collection c) 지정된 Collection 에 포함된 객체만을 남기고 다른 객체들은 Collection 에서 삭제한다. 이 작업으로 Collection 에 변화가 있는지의 여부 true/false 를 결과로 반환한다.
int size() 컬렉션에 저장되어 있는 객체의 개수를 반환한다.
Object[] toArray() 컬렉션에 저장된 객체를 객체배열로 반환한다.
Object[] toArray(Object[] a) 지정된 배열 a 에 컬렉션의 객체를 저장해서 반환한다.

 

 

3. List 인터페이스

 

List 인터페이스는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용된다. 컬렉션에서 상속받은 메서드외에 List 인터페이스에서 정의되어 있는 메서드는 다음과 같다.

 

메서드 설명
void add(int index, Obejct element)
boolean addAll(int index, Collection c)
지정된 위치 index 에 객체 element, 또는 컬렉션 c 의 객체들을 추가한다.
Object get(int index) 지정된 위치, index 에 있는 객체를 반환한다.
int indexOf(Object o) 지정된 객체의 첫번째 위치를 반환한다.
int lastIndexOf(Obejct o) 지정된 객체의 마지막 위치를 반환한다.
ListIterator listIterator()
ListIterator listIterator(int index)
List 의 객체에 접근할 수 있는 ListIterator 를 반환한다.
Object remove(int index) 지정된 위치, index 의 객체를 컬렉션에서 삭제하고, 삭제된 객체를 반환한다.
Object set(int index, Object element) 지정된 위치, index 에 객체를 저장한다.
void sort(Comparator c) 지정된 비교자, comparator 로 List 를 정렬한다.
List subList(int fromIndex, int toIndex) 지정된 범위, fromIndex ~ toIndex 에 있는 객체를 반환한다.

 

 

4. Set 인터페이스

 

Set 인터페이스는 중복을 허용하지 않고, 저장순서를 유지하지 않는 컬렉션 클래스를 구현하는데 사용된다.

 

 

5. Map 인터페이스

 

Map 인터페이스는 key, value 를 쌍으로 묶어서 데이터를 저장하는 컬렉션 클래스를 구현하는데 사용된다. key 는 중복될 수 없지만 value 는 중복을 허용한다.

 

메서드 설명
void clear() Map 의 모든 객체를 삭제한다.
boolean containsKey(Obejct key) 지정된 key 객체가 Map 의 key 로 저장되어 있는지 확인한다.
boolean containsValue(Object value) 지정된 value 객체가 Map 의 value 로 저장되어 있는지 확인한다.
Set entrySet() Map 에 저장되어 있는 key-value 쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환한다.
boolean equals(Object o) 동일한 Map 인지 확인한다.
Object get(Obejct key) 해당 key 와 쌍으로 묶여서 저장되어 있는 value 를 반환한다.
int hashCode() Map 의 hash code 를 반환한다.
boolean isEmpty() Map 이 비어있는지 확인한다.
Set keySet() Map 에 저장된 모든 key 객체를 반환한다.
Object put(Object key, Object value) 입력된 key-value 데이터 쌍을 Map 에 저장한다.
void putAll(Map t) 지정된 Map 의 모든 key-value 쌍을 추가한다.
Object remove(Obejct key) 해당 key 를 가진 key-value 쌍을 삭제하고, 삭제된 value 를 반환한다.
int size() Map 에 저장된 key-value 쌍의 개수를 반환한다.
Collection values() Map 에 저장된 모든 value 를 컬렉션 타입으로 반환한다.

 

Map 에서 key 는 중복을 허용하지 않기 때문에 keySet() 은 Set 타입으로 반환되고, value 는 중복을 허용하기 때문에 Collection 타입으로 반환된다.

 

- Map.Entry 인터페이스

 

Map.Entry 인터페이스는 Map 인터페이스의 내부 인터페이스이다. 내부 클래스와 같이 인터페이스도 인터페이스 안에 인터페이스를 정의하는 내부 인터페이스를 정의하는 것이 가능하다.

 

Map 에서는 key-value 쌍을 다루기 위해서 내부적으로 Entry 인터페이스를 정의해 놓았다.

 

public interface Map {
    interface Entry {
        Object getKey(); // Entry 의 key 를 반환한다.
        Object getValue(); // Entry 의 value 를 반환한다.
        Object setValue(Object value); // Entry 의 value 를 지정한다.
        boolean equals(Object o); // 동일한 Entry 인지 비교한다.
        int hashCode(); // Entry 의 hashCode 를 반환한다
        ...
    }
    ...
}
반응형

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] Stack, Queue  (0) 2022.01.24
[JAVA] List - ArrayList, LinkedList  (0) 2022.01.22
[JAVA] Format 클래스  (0) 2022.01.12
[JAVA] Calendar & Date  (0) 2022.01.05
[JAVA] try-with-resources statement  (0) 2021.12.30