Languages/Java

[HUFS/객체지향프로그래밍] #12 컬렉션 프레임워크

성중 2023. 1. 9. 13:29

컬렉션 프레임워크

java.util 패키지에서 객체 관리를 위해 제공하는 인터페이스와 구현 클래스를 컬렉션 프레임워크라 한다

 

컬렉션 프레임워크 (컬렉션 클래스 사용 방법을 정의한 주요 인터페이스)

List 컬렉션

List 컬렉션

  • 배열과 비슷하게 객체를 인덱스로 관리
  • 저장 용량이 자동으로 증가하며 객체 저장 시 자동 인덱스 부여
  • 객체의 추가/삭제/검색을 위한 다양한 메소드 제공
  • 객체 자체를 저장하는 것이 아닌 객체의 번지를 참조 (중복 저장 가능)

List 인터페이스의 메소드 (E 타입은 List 컬렉션 생성시 결정)
List 순회
가장 대표적인 구현 클래스인 ArrayList
객체 제거 시 앞으로 1씩 당겨 짐
ArrayList와 내부 구조가 동일하지만 하나의 스레드만 접근 가능한 Vector
인접 참조를 링크하여 체인처럼 객체를 관리하는 LinkedList (객체 제거 시 앞뒤 링크만 변경)

Set 컬렉션

Set 컬렉션

  • List 컬렉션과 달리 객체의 저장 순서가 유지되지 않음
  • 객체를 중복하여 저장할 수 없고 하나의 null만 저장 가능
  • HashSet, LinkedHashSet, TreeSet 등으로 활용

 

Set 인터페이스의 메소드 (E 타입은 Set 컬렉션 생성시 결정)
인덱스로 객체를 검색할 수 없어 iterator로 변환해 순회
Iterator 인터페이스의 메소드
Iterator 순회
Iterator의 remove 메소드로 객체를 제거하면 실제 Set에서 객체가 제거
객체의 해시코드를 기준으로 집합을 구성하는 HashSet
String 객체, 내부 데이터가 동일한 인스턴스 객체 등을 중복 없이 저장

Map 컬렉션

Map 컬렉션

  • key와 value로 구성된 Map.Entry 객체를 저장하는 구조
  • Entry는 Map 인터페이스 내부에 선언된 중첩 인터페이스
  • key는 중복 저장될 수 없으나 값은 중복 저장될 수 있음
  • 기존 키와 동일한 키로 값을 저장하면 새로운 값으로 대체
  • HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등으로 활용

 

Map 인터페이스의 메소드 (K와 V 타입은 키와 값의 타입으로 Map 생성시 결정)
Map 순회
키의 해시코드를 기준으로 동등 객체의 중복 저장을 방지하는 HashMap
HashMap 과 내부 구조가 동일하지만 하나의 스레드만 접근 가능한 Hashtable

LIFO와 FIFO 컬렉션

후입선출(LIFO)과 선입선출(FIFO) 구현을 위한 Stack 클래스와 Queue 인터페이스 제공
Stack 클래스
Queue 인터페이스