본문 바로가기
Programming/Java

[자바/Java] Collection1 - 개념

by 코딩하는 랄로 2023. 10. 13.
728x90

컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함된다.

 

그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있기 때문에 generic에 대해서 잘 모른다면 아래 블로그를 참고하기 바란다.

 

https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-%EC%A0%9C%EB%84%A4%EB%A6%ADGeneric

 

[자바/Java] 제네릭(Generic)

제네릭(Generic)이란 자바를 조금씩 알아가고 있는 사람에겐 제네릭이라는 키워드는 생소할 수 있다. 하지만, 이미 수없이 우리는 제네릭을 마주해왔음을 이번 글을 통해 알 수 있을 것이다. 제네

codingralro.tistory.com

 

 

Collection이란

컬렉션(collection)이란 많은 수의 데이터를 그 사용 목적에 적합한 자료구조로 묶어 하나로 그룹화한 객체를 말한다. 자바에서는 이러한 컬렉션을 위한 인터페이스와 클래스들이 있으며 자주 사용되는 클래스들의 종류와 상속 계층도는 아래와 같다.

 

 

 

Collection 사용 이유

Collection을 사용하는 이유에는 3가지가 있다

 

  • 일괄된 API : Collection의 일관된 API를 사용하여 Collection 밑에 있는 모든 클래스(ArrayList, Vector, LinkedList 등) Collection에서 상속받아 통일된 메서드를 사용한다
  • 프로그래밍 노력 감소 : 객체 지향 프로그래밍의 추상화의 기본 개념이 성공적으로 구현되어있다
  • 프로그램 속도 및 품질 향상 : 유용한 데이터 구조 및 알고리즘은 성능을 향상시킬 수 있다 Collection을 사용하여 최상의 구현을 생각할 필요없이 간단하게 Collection API를 사용하여 구현을 하면 된다

 

 

 

컬렉션의 종류

컬렉션의 종류는 ArrayList, LinkedList, Vector, Stack, HashSet, TreeSet, HashMap, TreeMap 등이 있으며, 크게 아래와 같은 자료구조 유형에 따라 구분된다.

 

  • List : 순서가 있는 데이터 들의 집합
  • Set : 중복이 허용되지 않는 데이터들의 집합
  • Map : key와 value를 가지는 데이터들의 집합, key값은 중복을 허용하지 않음
  • Queue : 데이터의 in/out 형식을 FIFO 방식으로 관리
  • Stack : 데이터의 in/out 형식을 LIFO 방식으로 관리

 

 

 

컬렉션의 특정

컬렉션 클래스들이 데이터를 다룰 때 그 데이터는 기본적으로 객체만 가능하다. 따라서 char, int, float와 같은 기본형은 사용할 수 없고 대신 Wrapper클래스를 사용해야 한다.

 

하지만, 오토박싱(auto boxing)과 오토언박싱(auto unboxing)으로 인해 사용자는 마치 기본형을 다룰 수 있는 것처럼 사용할 수 있다. 

 

컬렉션과 관련된 인터페이스 또는 클래스가 정의되어 있는 코드를 살펴보면 아래와 같이 제네릭(generics) 형태로 구현되어 있는 것을 확인할 수 있다. 따라서 사용자는 사용하고자 하는 데이터 타입을 지정하여 사용할 수 있는 것이다.

 

public interface List<E> extends Collection<E> { ... }

 

List, Set, Queue는 공통분모로 Collection 인터페이스를 상속받고 있으며, Collection 인터페이스가 가지는 주요 메서드는 아래와 같다. 

 

  • boolean add(E e) : 현재 컬렉션에 데이터 객체 e를 추가
  • boolean addAll(Collection<? extends E> c) : 현재 컬렉션에 컬렉션 c의 모든 데이터를 추가
  • boolean contains(Object o) : 현재 컬렉션에 객체 o의 포함 여부를 반환
  • boolean containsAll(Collection<?> c) : 현재 컬렉션에 컬렉션 c의 모든 데이터가 포함되어있는지 여부를 반환
  • boolean remove(Object o) : 현재 컬렉션에서 객체 o를 삭제
  • boolean removeAll(Collection<?> c) : 현재 컬렉션에서 컬렉션 c와 일치하는 데이터를 삭제
  • boolean retainAll(Collection<?> c) : 현재 컬렉션에서 컬렉션 c와 일치하는 데이터만 남기고 나머지는 삭제
  • void clear( ) : 현재 컬렉션의 모든 데이터를 삭제
  • int size( ) : 현재 컬렉션에 포함된 데이터 개수를 반환
  • boolean isEmpty( ) : 현재 컬렉션이 비어있는지 여부를 반환
  • Iterator<E> iterator( ) : 현재 컬렉션의 모든 요소에 대한 iterator를 반환
  • Object[ ] toArray( ) : 현재 컬렉션에 저장된 데이터를 Object 배열로 반환
  • <T> T[ ] toArray(T[ ] a ) : 현재 컬렉션에 저장된 데이터를 배열 a에 담고 배열 a를  반환

 

 

728x90

'Programming > Java' 카테고리의 다른 글

[자바/Java] Inner 클래스  (0) 2023.10.14
[자바/Java] Collection2 - 사용예제  (0) 2023.10.13
[자바/Java] 제네릭(Generic)  (0) 2023.10.12
[자바/Java] Wrapper 클래스  (0) 2023.10.12
[자바/Java] Time 패키지의 클래스  (0) 2023.10.11