2019-03-26

Collections

Collections

classDiagram
Iterable <|-- Collection
Collection <|-- Set
Set <-- AbstractSet
AbstractSet <|-- HashSet
HashSet <|-- LinkedHashSet
Set <|-- SortedSet
SortedSet <|-- NavigableSet
NavigableSet <-- TreeSet

Collection <|-- List
List <-- AbstractList
List <|-- ArrayList
List <|-- Vector
Vector <|-- Stack
List <|-- AbstractSequentialList
AbstractSequentialList <|-- LinkedList

Collection <|-- Queue
Queue <|-- Deque
Deque <-- LinkedList
Deque <-- ArrayDeque

Iterable: <interface>
Collection: <interface>
List: <interface>
Set: <interface>
SortedSet: <interface>
NavigableSet: <interface>
Queue: <interface>
  • Iterable : 컬렉션에 대한 반복 처리를 제공합니다.
  • Collection : 개체의 추가 및 제거, 컬렉션 내에 개체 포함여부, 컬렉션의 개체 개수 등의 기능을 제공합니다.
  • Set : 개체의 중복을 허용하지 않습니다.
    • HashSet : Hashing 을 통해 구현되었으며 개체의 순서를 보장하지 않습니다.
      Hashing
      해시함수(hash function)란 데이터의 효율적 관리를 위해 key를 고정된 길이의 hash로 매핑하는 함수입니다. 이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing) 이라고 합니다. 키값 중복으로 인해 hash 값에 대해 충돌이 발생할 수 있습니다.
      Imgur
    • LinkedHashSet : double-linked list 로써 개체간의 순서를 보장합니다.
    • TreeSet : 이진탐색트리(BinarySearchTree)의 형태로 데이터를 저장하며 순서를 유지하지 않습니다.
      이진탐색 (BinarySearch)
      추가작성
      이진탐색트리 (BinarySearchTree) 참조
      이진탐색(binary search)과 연결리스트(linked list)를 결합한 자료구조의 일종입니다. 이진탐색의 추가 / 삭제시 단점을 개선하였습니다.
  • List : 정렬된 순차 컬랙션입니다.
    • ArrayList : 유동적 길이를 가진 배열입니다.
    • Vector : ArrayList 와 비슷하게 유동적인 배열입니다. Thread-safe 나 Synchronization 을 위해서 사용됩니다.
    • Stock : LIFO(Last-In-First-Out) 형태의 배열입니다. _Vector_의 하위클래스로서 Thread-safe 합니다.
    • LikedList : double-linked list 로 개체간에 연결되어 있습니다. 그로인해 intermediate 위치에 추가 / 삭제가 빠릅니다. Deque 클래스도 구현합니다
  • Queue : FIFO (First-In-First-Out) 형태의 배열입니다. Typical usage is storage to hold elements before processing in the order of receipt.
    • Deque(Double-Ended-Queue) : can add and remove elements at both ends.
    • ArrayDeque : implementation of Deque using an array for storage.

Map

classDiagram
Map <-- AbstractMap
AbstractMap <|-- HashMap
HashMap <-- LinkedHashMap

Map <-- SortedMap
SortedMap <-- NavigableMap
AbstractMap <|-- TreeMap
NavigableMap <-- TreeMap

Map: <interface>
AbstractMap: <abstract>
SortedMap: <interface>
NavigableMap: <interface>
  • Map : 키(key)와 값(value)으로 개채 관리합니다.
  • AbstractMap :
    • HashMap : Map 인터페이스 구현을 위해 _HashTable 을 사용하였습니다. 중복을 허용하지 않으며 키와 값에 null을 허용합니다.
    • HashTable : HashMap 보다는 느리지만 Synchronization가 지원됩니다.
    • LinkedHashMap : _double-linked list_로써 키 간에 순서를 보장합니다.
    • TreeMap - 이진트리검색의 형태로 키/값 쌍으로 이루어진 개체를 저장합니다. 검색, 정렬이 뛰어나나 개체 추가/삭제는 시간이 소요됩니다.

참조

0 개의 댓글:

댓글 쓰기