자바 컬렉션 프레임워크 (Java Collection Framework)

yeoro·2021년 7월 10일
0
post-thumbnail

📚 정의

배열의 문제점을 해결하고, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색) 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시킨 것이다.

모든 컬렉션 클래스명은 구현한 인터페이스명이 포함되어 있어 한 눈에 클래스의 특징을 알 수 있다.
ex) HashMap 클래스는 Map 인터페이스를 구현한 것이다.


📚 장점

  • 이미 구현된 컬렉션 클래스를 사용함으로써 코딩 시간 단축
  • 컬렉션 프레임워크들은 잘 테스트되고 검증되었기 때문에 코드의 품질 보장
  • 유지보수 시간 단축
  • 재사용상호 운용성 보장


📚 구성

  • 컬렉션 인터페이스 : java.util 패키지에 존재하는 컬렉션 인터페이스
  • 컬렉션 클래스 : java.util 혹은 java.util.concurrent 패키지에 있으며 컬렉션 인터페이스의 구현체
  • 컬렉션 알고리즘 : 검색, 정렬, 셔플 등 기능 제공


📚 List

객체를 일렬로 늘어놓은 선형 자료구조이다. 인덱스로 모든 요소에 접근할 수 있으며, 중복 요소를 포함할 수 있다. null 값도 저장할 수 있지만 이 경우에는 해당 인덱스는 객체를 참조하지 않는다.

  • ArrayList, LinkedList


📚 Set

중복을 허용하지 않는 비선형 자료구조이다. 저장 순서가 보장되지 않기 때문에 무작위 접근(Random Access)를 허용하지 않는 대신 전체 객체를 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다. null 값을 허용하지만 중복없이 하나만 저장할 수 있다.

HashSet

Hash 알고리즘을 이용하여 값을 저장하는 방식

Hash

저장할 값을 어떤 값과도 중복되지 않는 HashCode로 변환하고 이 HashCode 값을 주소로 하여 값을 저장하는 방식

Hash의 경우 값 자체가 메모리가 되기 때문에, 같은 위치에 두 개의 값을 저장할 수 없다.

Complexity

Time

  • 데이터 검색, 추가, 삭제 : O(1) or O(N) (해시 충돌시)

Space

  • O(N)


📚 Map

키(Key)값(Value)으로 구성된 객체를 저장하는 자료구조이다.
Key는 중복을 허용하지 않지만, Value는 중복을 허용한다. 따라서, 중복되는 Key값이 저장될 경우 기존의 Value는 새로운 Value로 바뀐다.

  • HashMap (순서 보장X), TreeMap (순서 보장)

HashSet, HashMap

HashSet

  • 값이 곧 인덱스 (값을 HashCode로 변환해 해당 위치에 저장)
  • 저장
  • 조회

HashMap

  • 값과 인덱스 구분 (인덱스를 HashCode로 변환해 해당 위치에 값 저장)
  • 저장
  • 조회


EntrySet, KeySet

EntrySet

  • Map에 저장된 모든 키와 값 모음

KeySet

  • Map에 저장된 모든 키 모음

Complexity

Time

  • 데이터 검색, 추가, 삭제 : O(1) or O(N) (해시 충돌시)

Space

  • O(N) (Enrty의 갯수)


[참고]

0개의 댓글