본문 바로가기
개발일지/Java & Springboot

[Java] 컬렉션 Collection

by 최호희 2024. 6. 15.

들어가며,

스프링 강의를 듣다 Entity 설계시, 컬렉션은 필드에서 초기화하는게 좋다고 들었다.

따라서 자바의 컬렉션을 다시 한 번 머리 속에 정의시키고 싶어 글을 쓴다.

 

 

 


📌Java Collections Framework

 

Java에서 컬렉션(Collection)이란 여러 요소들을 담을 수 있는 자료구조다. 즉, 다수의 데이터 그룹이며 다른 말로 컨테이너(Container)라고도 부른다. 

JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.

 

Java Collections Framework 의 등장배경

아래와 같은 이유로 등장하게 되었다.

1. 배열은 선언과 동시에 배열의 크기가 초기화 되고 이후에 변경이 불가능하다.
2. 배열의 크기가 작은 경우가 아니면 탐색에 오래 걸린다. 
3. 데이터를 검색하는 과정에서 시간이 많이 걸린다.
4. 같은 기본형 데이터 타입의 자료형만 저장할 수 있다.

 

 

위는 Java 컬렉션 프레임워크의 상속 구조를 나타낸 것 이다.

사용 용도에 따라 List, Set, Map 3가지로 요약할 수 있다.

Map 같은 경우 Collection을 상속 받는 것은 아니지만, Collection으로 구분이 된다.

 

각 인터페이스의 특징

 

List 인터페이스

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

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

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

 ArrayList, Vector 클래스의 사용법은 거의 동일하고 기능도 거의 비슷하다. 확장 가능한 배열이라고 생각하면 이해가 쉽다.

Stack은 Vector클래스를 확장하여 만들었으며, 만든 이유는 LIFO를 지원하기 위함이다.

 

 

 

 

 

 

 


참고 블로그:

https://gangnam-americano.tistory.com/41

https://velog.io/@devharrypmw/Java-List-Set-Map%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90