(1) 컬렉션 프레임웍이란?

2022. 1. 10. 12:54·자바/컬렉션 프레임워크

1. 컬렉션 프레임웍이란?

- 데이터 군(group)을 저장하는 클래스들을 표준화한 설계를 뜻한다.

 

- 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다.

 

- Vector, Hashtable, Properties와 같은 클래스를 컬렉션 클래스라고 부르며, 원래는 JDK1.2 이전에는

서로 다른 각자의 방식으로 처리해야 했으나, 프레임웍이 등장 이후로는 표준화된 방식으로 다룰 수

있도록 체계화되었다.

 

 

 

1-1. 컬렉션 프레임웍의 핵심 인터페이스

- 아래의 그림처럼 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재하는데,

List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가 정의하였다.

- List, Set, Map에 대한 설명은 아래와 같다.

(1) List

: 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.

 

( 구현 클래스: ArrayList, LinkedList, Stack, Vector 등 )

 

 

(2) Set

: 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않음.

( 예: 양의 정수 집합, 소수 집합 )

 

( 구현 클래스: HashSet, TreeSet 등 )

 

 

(3) Map

: 키와 값의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않지만, 값은 허용됨.

( 예: 우편번호, 지역번호(전화번호) )

 

( 구현 클래스: HashMap, TreeMap, Hashtable, Properties 등 )

 

( Stack과 Vector, Hashtable, Propertise 클래스들은 컬렉션 프레임웍이 만들어지기 전부터

존재하던 것이기 때문에 컬렉션 프레임웍의 명명법을 따르지 않는다. )

 

 

- 아래의 그림은 JDK 1.2전(왼쪽)과 JDK 1.2후(오른쪽)의 상속 계층도 변화를 보여준다.

 

 

 

1-2. Collection 인터페이스

- List와 Set의 조상인 컬렉션 인터페이스에는 다음과 같은 메서들이 정의되어 있다.

( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 580p를 참고하자. )

 

(1) boolean retainAll(Collection c)

: 지정된 Collection에 포함된 객체만 남기고 다른 객체들은 Collection에서 삭제한다.

: 만약 변화가 있다면 true, 없다면 false이다.

 

 

(2) Object[] toArray()

: Collection에 저장된 객체를 객체배열(Object[])로 반환한다.

 

 

(3) Object[] toArray(Object[] a)

: 지정된 배열에 Collection의 객체를 저장해서 반환한다.

 

 

 

1-3. List 인터페이스

- 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하는데 사용된다.

 

- 아래의 그림은 상속 계층도를 보여준다.

 

- list에는 다음과 같은 메서들이 정의되어 있다.

( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 581p를 참고하자. )

 

(1) int indexOf(Object o)

: 첫 번째 요소부터 찾아서 지정된 객체의 위치 index 값을 반환한다.

 

 

(2) int lastIndexOf(Object o)

: 반대로 마지막 요소부터 찾아서 지정된 객체의 위치 index 값을 반환한다.

 

 

(3) void sort(Comparator c)

: 지정된 비교자(Comparator)로 List를 정렬한다.

 

 

(4) List subList(int fromIndex, int toIndex)

: 지정된 범위(from~to)에 있는 객체를 반환한다.

 

 

 

1-4. Set 인터페이스

- 중복을 허용하지 않고 저장 순서가 유지되지 않는 컬렉션을 구현하는데 사용된다.

 

- 아래의 그림은 상속 계층도를 보여준다.

 

 

 

 

1-5. Map 인터페이스

- 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용된다.

 

- 키는 중복될 수 없지만 값은 중복을 허용한다.

 

- 만약 중복된 키 값을 저장하게 된다면, 마지막에 저장한 것이 남게된다.

 

- 아래의 그림은 상속 계층도를 보여준다.

 

- Map에는 다음과 같은 메서들이 정의되어 있다.

( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 582p를 참고하자. )

 

(1) void clear()

: Map의 모든 객체를 삭제한다.

 

 

(2) Object get(Object key)

: 저장한 key 객체에 대응하는 value 객체를 찾아서 반환한다.

 

 

(3) Object put(Object key, Object value)

: Map에 value 객체를 key 객체에 연결하여 저장한다.

 

 

(4) Set entrySet()

: Map에 저장되어 있는 key-value 쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환한다.

 

 

(5) Set keySet()

: Map에 저장된 모든 key 객체를 반환한다.

 

 

(6) Collection values()

: Map에 저장된 모든 value 객체를 반환한다.

 

 

 

1-6. Map.Entry 인터페이스

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

 

- Map에 저장되는 key-value 쌍을 다루기 위해 정의하였고, 보다 객체지향적으로 설계하도록 유도하기 위한 것이다.

 

'자바 > 컬렉션 프레임워크' 카테고리의 다른 글

(6) Arrays  (0) 2022.01.17
(5) Iterator, ListIterator, Enumeration  (0) 2022.01.15
(4) Stack과 Queue  (0) 2022.01.13
(3) LinkedList  (0) 2022.01.12
(2) ArrayList  (0) 2022.01.10
'자바/컬렉션 프레임워크' 카테고리의 다른 글
  • (5) Iterator, ListIterator, Enumeration
  • (4) Stack과 Queue
  • (3) LinkedList
  • (2) ArrayList
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      Collections Framework
      java.time 패키지
      ServerSocket
      TCP 소켓 프로그래밍
      Arrays
      문자 기반 스트림
      제자리 정렬
      안정 정렬
      자바 개념
      map()
      불안정 정렬
      역직렬화
      snail
      java.lang패키지
      안드로이드 스튜디오
      file
      유용한 클래스
      코딩테스트
      스트림
      다형성
      중간연산
      serializable
      outputstream
      소켓 프로그래밍
      람다식
      알고스팟
      코드트리
      InputStream
      선택 정렬
      코딩트리조별과제
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    (1) 컬렉션 프레임웍이란?
    상단으로

    티스토리툴바