컬렉션

김국민·2025년 2월 26일

JAVA

목록 보기
12/21

자바 컬렉션 프레임워크?

  • 자료구조들을 쉽게 사용할 수 있도록 인터페이스와 구현체를 제공하는 집합
  • 컬렉션을 통해 저장, 조회 ,삭제, 정렬 등 다양한 기능을 구현할 수 있음
  • 배열과 다르게 길이를 동적으로 조절 가능


컬렉션 종류와 특징

인터페이스특징구현체
List순서 유지, 중복 허용ArrayList
Set순서 없음, 중복 불가HashSet
Map키-값 구조, 키 중복 불가HashMap

List

ArrayList

특징 선형 구조이며 요소의 순서가 있고 중복을 허용한다

  • add(element) : 요소 추가
  • get(index) : 인덱스 값 조회
  • remove(element) : 요소 제거

    ArrayList는 요소 추가와 삭제 시 배열의 크기를 조정해야 하므로, 빈번한 요소 추가와 삭제가 발생하는 경우 성능이 저하될 수 있다.
    왜냐하면 배열의 크기를 조정하는 과정에서 많은 시간이 소요되기 때문

LinkedList

LinkedList는 연결 리스트 기반의 리스트 구현체로, 각 요소가 이전 요소와 다음 요소의 참조를 가지고 있다. 이 구조는 요소 추가와 삭제가 빈번한 경우에 유리

  • add(element) : 요소 추가
  • get(index) : 요소 확인
  • poll() : 첫번째값 추출 후 삭제
  • set(index, element) : 요소 변경
  • addFirst(element) : 첫번째 요소로 삽입
  • addLast(element) : 마지막 노드로 삽입

LinkedList는 요소 추가와 삭제 시 참조만 변경하면 되므로, 성능이 우수 왜냐하면 배열의 크기를 조정할 필요가 없다.
LinkedList는 인덱스를 사용하여 요소에 접근할 때, 처음부터 순차적으로 탐색해야 하므로 접근 속도가 느림
왜냐하면 각 요소의 참조를 따라가야 하기 때문.


Set

HashSet

HashSet 은 순서를 유지하지 않고 중복을 허용하지 않는다.

  • add(e) : 요소 추가
  • remove(e) : 요소 제거
  • get() : HashSet은 순서를 보장하지 않기 때문에 get을 지원하지 않음
  • 비선형 구조이기에 순서가 없으며 그렇기에 인덱스도 존재하지 않는다.
  • 그렇기에 값을 추가하거나 삭제할 때에는 내가 추가 혹은 삭제하고자 하는 값이 Set 내부에 있는지 검색 한 뒤 추가나 삭제를 해야 하므로 속도가 List구조에 비해 느리다.

TreeSet

TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있다

  • add(e) : 요소 추가
  • remove(e) : 요소제거
  • size() : 크기 구하기
  • HashSet과는 달리 TreeSet은 이진 탐색 트리(BinarySearchTree) 구조로 이루어져 있다
  • 이진 탐색 트리는 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조
  • HashSet보다 데이터의 추가와 삭제는 시간이 더 걸리지만 검색과 정렬에는 유리

Map

HashMap

HashMap 은 키(Key) - 값(Value) 구조로 데이터를 저장합니다.(키: 값)
키는 중복될 수 없지만 값은 중복 가능
순서보장 X

  • put(key, value) : key : value 추가
  • get(key) : value 조회
  • remove(key) : 요소 제거
  • keySet() : key 확인
  • values() : 값 확인

HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 가지고 있다

TreeMap

TreeMap은 이진트리를 기반으로 한 Map 컬렉션
자동으로 정렬된다

  • put(key, value) : key : value 추가
  • get(key) : value 조회
  • remove(key) : 요소 제거
  • keySet() : key 확인
  • TreeMap에 저장하면 자동으로 정렬된다.
  • 키는 저장과 동시에 오름차순으로 정렬
    숫자는 값으로, 문자는 유니코드로 정렬됨
  • 데이터를 추가 삭제가 느림
  • 하지만 조회가 빠르다
profile
개발지망생

0개의 댓글