[Java] Collection 정리

Cherry·2022년 12월 5일
0

Collection - 인터페이스

Java에서 Collection은 단어 뜻 그대로 데이터의 집합이나 그룹을 의미한다.

JCF, Java Collections Framework에서는 Collection과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.

Collection의 핵심 인터페이스는 List, Set, Map이다. ListSet은 공통되는 부분이 있어 하나로 모아 새로운 인터페이스인 Collection을 추가로 정의할 수 있었지만, Map 인터페이스는 전혀 다른 형태로 컬랙션을 다루기 때문에 같은 상속계층도에 포함되지 못하고 독립적인 인터페이스로 구현되어 있다.

Collections - 클래스

Collections란 Collection 인터페이스와 달리 컬렉션 프레임웍에 속하는 클래스를 지원해 주는 다양한 메소드가 존재하는 static 클래스이다.

다시 말해, Collection은 인터페이스이고 그 인터페이스를 상속하는 클래스들을 모아놓은 것이 Collections라고 생각하면 이해가 쉬울 것이다. Collections의 모든 컬렉션 클래스들은 List, Set, Map 중의 하나를 구현하고 있으며, 구현한 인터페이스의 이름이 클래스의 이름에 포함되어 있어서 이름만으로도 클래스의 특징을 쉽게 알 수 있다.

Collection 하위 인터페이스

List 인터페이스

List 인터페이스는 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하는데 사용된다.

  • ArrayList
    단방향 포인터 구조
    각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어나다.
    기존의 Vector를 개선한 것으로 Vector와 구현원리 및 기능적인 측면에서 동일하다고 할 수 있다.
    비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다는 단점이 존재한다.
  • LinkedList
    양방향 포인터 구조 (이중 연결리스트)
    데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기 때문에 유용하게 사용된다.
  • Vector
    과거에는 대용량 처리를 위해 사용했으나, 내부에서 자동으로 동기화 처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않는다고 한다..

Set 인터페이스

Set 인터페이스는 중복을 허용하지 않고 저장 순서가 유지되지 않는 컬렉션을 구현하는데 사용된다.

  • HashSet
    가장 빠른 임의 접근 속도를 가진다.
    순서를 예측할 수 없다.
  • TreeSet
    정렬 방법을 지정할 수 있다.

Map 인터페이스

Map 인터페이스는 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션을 구현하는데 사용된다. 이때 키는 중복될 수 없지만 값은 중복을 허용하며 순서가 없다.

  • HashTable
    HashMap보다는 느리지만 동기화를 지원한다.
    null 값이 들어갈 수 없다.
  • HashMap
    중복과 순서를 허용하지 않는다.
    null 값이 들어갈 수 있다.
  • SortedMap
    이름 그대로 정렬된 Map

참고
https://gangnam-americano.tistory.com/41
https://tenlie10.tistory.com/10
https://bangu4.tistory.com/194
(도서) Java의 정석

profile
호기심 많은 백엔드 개발자입니다 😝

0개의 댓글