Java Collection - 콜렉션

전윤지·2021년 6월 1일
0

JAVA

목록 보기
3/10

1. Collection

  • 여러 원소를 담을 수 있는 자료구조
  • List, Set, Queue로 크게 3가지 인터페이스로 분류.
    Map은 collection 인터페이스를 상속받고 있진 않지만 collection으로 분류 함

[ 배열과의 차이점? ]
: 배열은 정적으로 메모리 할당. collection은 동적으로 메모리 할당.


2. Collection 종류

1) List

  • 순서있는 자료구조

    (1) ArrayList

    • 배열을 기반으로 구현
    • 논리적, 물리적 저장 순서가 일치 함
    • 삭제, 삽입 시 자료의 이동이 필요하므로 시간이 더 걸림
    • thread safe하지 않음 (동기화 X)
      => 동시에 여러 스레드가 접근 가능

    (2) LinkedList

    • 자료를 노드의 포인터 부분을 이용 해 서로 연결시킴
    • 일반 배열 (array)보다 데이터 검색 속도 느림
    • 자료의 삽입, 삭제 시 용이
    • 연결을 위한 포인터 사용으로 저장 공간이 더 필요 함
    • 인덱스 대신 현재 위치의 이전, 다음 위치를 기억 함

    (3) Vector

    • 배열과 마찬가지로 인덱스를 이용 해 배열에 엑세스 가능
    • thread safe함 (동기화 되어 있음)
      => 한번에 하나의 스레드만 접근 가능

2) Set

  • 순서 없음
  • 중복 허용 X

    (1) HashSet

    • 내부적으로 해싱을 이용해 구현 된 클래스
    • set 파생 클래스에서 가장 성능 우수

    (2) TreeSet

    • 레드-블랙 트리 (이진 트리의 일종) 구조
    • 삽입, 삭제 시 log(n)

3) Queue

  • 먼저 들어온 것이 먼저 나감 (FIFO)

    (1) PriorityQueue

    • 들어온 순서가 아닌, 우선순위 별로 큐에서 원소 꺼냄

    (2) ArrayDeque

    • 큐를 양쪽에서 꺼낼 수 있음

4) Map

  • (key, value) 형태로 저장

    (1) HashMap

    • 동기화 보장 X
    • 순서 보장 X

    (2) HashTable

    • HashTable과 거의 동일하지만, 동기화 보장

    (3) TreeMap

    • 정렬된 순서대로 키, 값 저장
    • 검색 빠름

    (4) LinkedHashMap

    • 연결리스트로 구현한 HashMap
    • 순서 보장

0개의 댓글