Java/객체지향

[객체지향][자바의 정석] - 23. Collections 클래스, 컬렉션 클래스 요약

얄루몬 2022. 2. 13. 21:20

https://youtu.be/u0pJGFyvrqc?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 

📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.


1. Collections란? - 컬렉션을 위한 메서드(static)를 제공한다.

    • 컬렉션 채우기, 복사, 정렬, 검색 - fill( ), copy( ), sort( ), binarySearch( ) 등

 

    • 컬렉션의 동기화 - synchronizedXXX( ) 

        List syncList = Collections.synchronizedList(new ArrayList(...));

 

  • 변경불가 컬렉션 만들기(readOnly) - unmodifiableXXX( )

 

  • 싱글톤 컬렉션 만들기 - singletonXXX( )
    • 싱글톤이란? 객체 1개만 저장하게 하는 것을 의미한다

 

  • 한 종류의 객체만 저장하는 컬렉션 만들기 -checkedXXX( )
    • 원래는 여러 종류의 객체를 저장할 수 있는데 이 메소드를 사용하면 한 가지 타입만 저장가능하게 된다.

 

 

 

2. 자바 Collection 

Collection이란 데이터의 집합, 그룹을 의미한다.

 

 

 

3. Collections 인터페이스의 특징

인터페이스  구현클래스  특징 
 Set  HashSet
TreeSet
 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
 List  LinkedList
Vector
ArrayList
 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
 Queue  LinkedList
PriorityQueue
 List와 유사
 Map  Hashtable
HashMap
TreeMap
 키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,
순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.

 

 

4. 정리

[Set 인터페이스] - 순서 유지 X , 중복 허용 X

 

순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

 

  • HashSet
    - 가장빠른 임의 접근 속도
    - 순서를 예측할 수 없음

  • TreeSet
    - 정렬방법을 지정할 수 있음

 

 

[List 인터페이스] - 

 

순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.

 

  • LinkedList
    - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
    - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임

  • Vector
    - 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음

  • ArrayList
    - 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남

 

[Map 인터페이스]

키(Key), 값(Value)의 쌍으로 이루어진 데이터 집합으로, 순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.

 

  • Hashtable
    - HashMap보다는 느리지만 동기화 지원
    - null불가

  • HashMap
    - 중복과 순서가 허용되지 않으며 null값이 올 수 있다.

  • TreeMap
    - 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름