본문 바로가기

개발(합니다)/Java&Spring

[java-기초-15] 컬렉션 프레임워크

반응형

자바에서는 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util. 패키지에 컬렉션과 관련 된 인터페이스와 클래스들을 포함시켜 놓았고 이를 컬렉션 프레임워크라고 부른다.

컬렉션 : 사전적 의미로 요소를 수집해서 저장하는 것을 말하며 자바 컬렉션은 객체를 수집해서 저장하는 역할을 한다.
프레임워크 : 사용 방법을 미리 정해 놓은 라이브러리를 말한다.

인터페이스 분류 특징 구현 클래스
Collection List - 순서를 유지하고 저장
- 중복 저장 가능
ArrayList, Vector,
LinkedList
Set - 순서를 유지하지 않고 저장
- 중복 저장 안됨
HashSet, TreeSet
Map - 키와 값의 쌍으로 저장 HashMap, Hashtable,
TreeMap, Properties

List 컬렉션

배열과 유사한 형태로 사용된다.

  1. ArrayList
    • 추가하는 객체를 인덱스로 관리하고 저장 용량을 초과한 객체들이 들어오면 자동으로 저장용량이 늘어난다.
    • 가운데 값이 지워지면 뒤에 있는 데이터들을 지워진 인덱스를 기준으로 하나씩 당겨 빈 공간이 없도록 한다.
  2. Vector
    • ArrayList와 동일한 구조를 가지며 동기화 메서드로 구성되어 있어 이를 스레드 안전하다.
  3. LinkedList
    • ArrayList와 사용법은 같지만 내부 구조는 완전 다른데 인접 참조를 링크해서 체인처럼 관리한다.

Set 컬렉션

중복을 허용하지 않고 인덱스로 관리하지 않는다.

Map 컬렉션

키와 값으로 구성된 Entry 객체를 저장하는 구조이다.

  1. HashMMap
    • 가장 대표적인 Map 인터페이스를 구현한 컬렉션이다.
  2. Hashtable
    • HashMap과 동일한 구조로 이루어져 있다.
    • 차이점은 Hashtable은 동기화된 메서드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메서드들을 실행 할 수 없어 스레드 안전하다.
  3. Properties
    • Properties는 Hashtable의 하위 클래스이다.
    • 차이점은 키와 값을 String 타입으로 제한한 컬렉션이다.

검색 기능을 강화시킨 컬렉션

  1. 이진 트리 구조
  • TreeSet
  • TreeMap
  1. Comparable과 Comparator

LIFO와 FIFO 컬렉션

LIFO : 후입 선출 - 스택
FIFO : 선입 선출 - 큐

동기화된 컬렉션

  • synchronizedList
  • synchronizedMap
  • synchronizedSet

병렬 처리를 위한 컬렉션

  • java.util.conccurrent - ConcurrentHashMap, ConcurrentLinkedQueue
  • 부분 잠금 기능
반응형

'개발(합니다) > Java&Spring' 카테고리의 다른 글

[java-기초-17] IO 기반 입출력  (0) 2021.03.10
[java-기초-16] 스트림과 병렬 처리  (0) 2021.02.24
[java-기초-14] 람다식  (0) 2021.02.14
[java-기초-13] 제네릭  (0) 2021.02.13
[java-기초-12] 멀티 스레드  (5) 2021.01.25