Collections Framework

노영조 ㅣ 2023. 3. 8. 19:58

컬레션 프레임워크

  • 컬렉션(collection) : 여러 객체(데이터)를 모아 놓은 것을 의미
  • 프레임워크(framework) : 표준화, 정형화된 체계적인 프로그래밍 방식, 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할
  • 컬렉션 프레임워크(collections framework) : 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식, 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공
  • 컬렉션 클래스(collection class) : 다수의 데이터를 저장할 수 있는 클래스 ex) Vector, ArrayList, HashSet

 

컬렉션 프레임워크의 핵심 인터페이스

 

컬렉션 프레임워크 핵심 인터페이스간의 상속계층도

  • List와 Set을 구현한 컬렉션 클래스들은 서로 많은 공통부분이 있어서, 공통된 부분을 뽑아 Collection 인터페이스를 정의 할수 있었지만 Map 인터페이스는 이들과는 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함 X

 

Collection  인터페이스

Collection 인터페이스에 정의되어있는 메서드들

 

List 인터페이스

List의 상속계층도

  • Vector : ArrayList 클래스와 동일한 내부 구조를 가지고 있지만 Vector 클래스는 동기화를 지원한다. 그렇기 때문에 여러개의 스레드가 동시에 Vector 객체의 접근 하지 못해 이전 작업이 수행이 완료되어야 접근할 수 있다. 그래서 멀티스레드 환경에서 안전하게 객체 내의 데이터를 변경 할 수 있다. 다만, 멀티스레드를 지원하기 때문에 ArrayList보다는 성능이 떨어진다는 단점을 가지고 있다.
  • Stack : 선입후출(LIFO)의 구조를 가지는 자료구조이며 Vector 클래스를 상속받아 확장한다. 그렇기 때문에 Vector 클래스의  문제점을 그대로 이어받는다.
  • ArrayList : 내부적으로 배열을 만들어 인덱스와 메모리 연속성의 특징을 가지는 클래스
  •  LinkedList : ArryaList처럼 배열의 구조를 이용하는 것이 아니라 Node라는 객체의 연결을 통해 리스트를 구현한다. 때문에 LinkedList는 순차접근을 통해 데이터에 접근한다.

 

List 인터페이스에 정의되어있는 메서드들

Set 인터페이스

Set의 상속계층도

  • HashSet : Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스이며, 중복된 데이터를 저장할 수 없으며 순서를 유지하지 않는다.
  • TreeSet : 이진 검색 트리라는 자료구조 형태로 데이터를 저장하는 컬렉션 클래스이다. 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장함으로 저장순서를 유지하지 않는다.

Set 인터페이스에 정의되어 있는 메서드들

  • Collection 인터페이스와 동일
  • Set은 집합이기 때문에 집합과 관련된 메서드가 있음.

 

집합과 관련되 메서드들

 

Map 인터페이스

Map의 상속계층도

  • HashMap : 키의 순서가 무작위로 섞여있으며 구현은 연결리스트로 이루어진 배열로 되어있다. null key와 null value를 모두 허용
  • LinkedHashMap : 키의 순서는 삽입한 순서대로 정렬되어 있다.
  • TreeMap : 키의 순서는 정렬되어있다.
  • Hashtable : HashMap과 동일하지만 null key와 null value를 허용하지 않고 동기화를 지원한다.

 

Map 인터페이스의 메서드들

'Java' 카테고리의 다른 글

컬렉션 프레임워크III  (0) 2023.04.17
컬렉션 프레임워크II  (0) 2023.03.27
객체지향 프로그래밍 IV  (0) 2023.02.22
객체지향 프로그래밍 III  (0) 2023.02.09
객체지향 프로그래밍II  (0) 2023.01.25