본문 바로가기
Develop

이것이 자바다 - 컬렉션 프레임워크

by _dreamgirl 2020. 2. 22.
반응형

컬렉션 프레임워크 - 객체를 수집하고 저장하는 역할을 미리 정해 놓은 라이브러리

대표적으로는 List, Set, Map이 있다.

List - 순서를 유지하고 저장, 중복 저장 가능

Set - 순서를 유지하지 않고 저장, 중복 저장 불가

Map - 키와 값의 쌍으로 저장, 키는 중복 저장 불가

 

List Collection

 

ArrayList

  • 인덱스로 객체를 관리하는 면으로 배열과 비슷
  • 저장 용량을 초과한 객체들이 들어오면 자동적으로 저장 용량이 늘어난다.
  • 객체의 삽입 삭제가 자주 일어나는 경우에는 LinkedList 사용을 권장
  • 검색이나 객체를 마지막에 추가하는 경우에는 ArrayList가 더 좋은 성능을 발휘한다.

 

Vector

  • 동기화된 메소드로 구성이 되어있음
  • 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있음

 

LinkedList

  • 내부에서 객체를 저장해서 인덱스로 관리하지만, 인접 참조 링크해서 체인처럼 관리한다.
  • 중간에 인덱스를 삭제하는 경우 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않음.

 

Set Collection

 

HashSet

  • 객체들을 순서 없이 저장하고, 동일한 객체는 중복 저장하지 않음
  • 객체를 저장하기 전 객체의 HashCode 를 비교, Equal 메소드로 비교하여 같으면 저장하지 않는다

 

Map Collection 

 

HashMap

  • 키는 중복 저장될 수 없지만 값은 중복 저장이 되어 대치될 수 있음
  • 저장된 객체 대상으로 하나씩 얻고 싶을때는 keySet 메소드를 통해 모든 키를 Set 컬렉션으로 얻은 다음 반복자를 통해 키를 하나씩 얻고 get 메소드를 통해 값을 얻는다

 

HashTable

  • HashMap과 다른점은 동기화된 메소드로 구성 되어 있다는 점

 

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

 

TreeSet

  • 이진트리 기반으로한 Set 컬렉션
  • 객체를 저장하면 자동으로 정렬되는데 부모값과 비교하여 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장한다

 

TreeMap

  • TreeSet과 다른 점은 키와 값이 저장된 Map.Entry에 저장한다
  • TreeSet과 달리 메소드명에도 _Entry과 붙는다. 기능은 거의 동일

 

 

LIFO와 FIFO 컬렉션

 

LIFO(Last In First Out) - Stack

FIFO(First In First Out) - Queue

 

병렬 처리를 위한 컬렉션

 

ConcurrentHashMap, ConcurrentLinkedQueue

 

 

반응형

댓글