관리 메뉴

제뉴어리의 모든것

Chapter 11. Collection Framework - 1 (컬랙션 프레임웍의 인터페이스에 대하여) 본문

JAVA/자바의정석

Chapter 11. Collection Framework - 1 (컬랙션 프레임웍의 인터페이스에 대하여)

제뉴어리맨 2022. 7. 4. 00:20

Collection Framework

다수의 데이터를 다루는 표준화된 프로그래밍 방식. 
쉽게 말해 Collection 인터페이스를 구현한 클래스들을 사용하여 많은 데이터를 다루는  프로그래밍 방법이다.

 

Collection Framework 핵심 인터페이스

List , Set, Map 이 존재한다

컬렉션 프레임웍을 크게 3가지로 구분하였다.
그 중에서도 List, Set 인터페이스는 공통부분이 많으므로 공통부분을 뽑아서 상위에 Collection 이라는 인터페이스를 만들어 List, Set 인터페이스에 상속시켜 주었다. 컬렉션 프레임웍의 모든 클래스들은 아래에 인터페이스 3가지 중 하나를 무조건 구현하고 있다.

- Collection 인터페이스의 주요 메서드 
: boolean add(Object o)
: boolean remove(Object o)
: boolean equals(Object o)
: boolean contains(Object o)
: void clear()

이외의 메서드가 더 존재하므로 필요에 따라 찾아보며 사용할것.

  • List (Collection Interface) - Collection Interface의 자손
    순서 O, 중복 O

    - 주요 구현체
    ArrayList, LinkedList, Stack, Vector

    - 주요 메서드
    : void add(int index, Object element)
    : boolean addAll(int index, Collection c)
    : Object get(int index)
    : int indexOf(Object o)
    : int lastIndexOf(Object o)
    : ListIterator listIterator()
    : ListIterator listIterator(int index)
    : Object remove(int index) - 지정된 위치의 객체를 삭제하고 삭제된 객체를 반환
    : Object set(int index, Object element) 
    : void sort(Comparator c)
    : List subList(int fromIndex, int toIndex)


  • Set (Collection Interface) - Collection Interface의 자손
    순서 X, 중복 X.
    데이터를 집합의 개념으로 가지고 있는 컬랙션이므로 중복, 순서가 존재하지 않는다.

    - 주요 구현체
    HashSet, TreeSet

    - 주요 메서드
    List 인터페이스와 동일

  • Map
    Map 컬랙션에 소속된 한 데이터는 키(Key)와 값(Value) 을 한 쌍의 형태로 존재하며,
    이러한 데이터들을 관리하는 컬랙션.
    순서 X
    Key 중복 X 
    Value 중복 O
    만약 Key값이 중복되는 데이터를 저장한다면 해당 키값의 Value는 가장 마지막에 저장한 Value값으로 대체된다.
    (매우 중요한 점이다. 이 점을 기억해두면 많은 알고리즘 문제를 풀때 매우 유용하다)

    - 주요 구현체
    HashMap, TreeMap, Hashtable, Properties

    - 주요 메서드
    : void clear ()
    : boolean containsKey (Object key)
    : boolean containsValue (Object value)
    : Set entrySet () - Map에 저장되어 있는 key-value쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환
    : boolean equals (Objectg o)
    : Object get (Object key)
    : int hashCode ()
    : boolean isEmpty ()
    : Set keySet () - Map에 저장된 모든 key객체를 반환
    : Object put (Object key, Object value)
    : void putAll (Map t)
    : Objectg remove (Object key)
    : int sizer()
    : Collection values () - Map에 저장된 모든 value 객체를 반환


구현체들의 명명법

보통의 컬랙션의 구현체 클래스들은 구현하고 있는 인터페이스에 따라 클래스명이 명명되어 있다.
예를 들어, List 컬랙션의 구현체 ArrayList, LinkedList가 있는데,

Stack, Vector, Hashtable, Properties 와 같은 클래스들은 명명법 규칙에 해당되지 않는다.

이러한 이유는,

컬랙션 프레임웍이 생기기전부터 존재, 사용하였기 때문에 기존 소스 호환을 위해 그대로 남겨두고 내부적으로만 컬랙션 인터페이스의 구조로 수정하여 컬랙션 프레임웍처럼 사용할 수 있도록 남겨둔 것이다. 현재로써는 사용하지 않는것이 좋다.



Map.Entry 인터페이스

Map 인터페이스의 내부 인터페이스이다. 

Map 인터페이스에서 내부적으로 데이터를 다룰때 필요에 의해 만들어진 것이다.
Map 인터페이스를 구현하는 클래스는 Map.Entry도 구현해야한다.


- 대략적인 정의

public interface Map {	
	:
    : 
    public static interface Entry {
		Object getKey();
        Object getValue();
		
        :
        :
	}
    
	:
}