230731 TIL Chapter 14. 컬렉션 ( Collection )

최규연·2023년 7월 31일
0

TIL

목록 보기
14/57

TIL 컬렉션 Collection!!!

컬렉션 Collection

메모리상에서 자료를 구조적으로 처리하는 벙밥을 자료구조라 말하는데 컬렉션(Collection)은 자바에서 제공하는 자료구조를 담당하는 프레임워크이다.
자료를 구조적으로 처리하는 방법은 전에 배열을 배우면서 했던 이야기인데 배열의 단점과 컬렉션의 장점을 확인해보겠다.

배열의 단점

  1. 한번 크기를 지정하면 변경 불가
  • 공간 크기가 부족하면 에러 -> 여유있게 크기를 할당하면 == 메모리 낭비
  • 필요에 따라 공간을 늘리거나 줄일 수 없다.
  1. 배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불편
  • 추가, 삭제할 데이터부터 마지막에 기록된 데이터까지 하나씩 뒤로 밀어내거나 당겨와 추가,삭제 해야한다. == 복잡한 알고리즘
  1. 한가지 타입의 데이터만 저장 가능하다.

컬렉션의 장점

  1. 저장하는 크기의 제약이 없다.
  • 자기가 알아서 늘리거나 줄이거나 자유롭게 한다.
  1. 추가, 삭제, 정렬 등의 기능 처리가 간단하다.
  • 자료를 구조적으로 처리하는 자료구조가 이미 내장되어 있어 알고리즘 구현이 필요없다.
  1. 여러 타입의 데이터가 저장 가능하다.
  • 객체만 저장할 수 있기 때문에 기본 자료형을 저장하는 경우 Wrapper클래스를 사용해야한다. (Wrapper 클래스 8가지 : Boolean, Character, Byte, Short, Integer, Long, Float, Double)

컬렉션 주요 인터페이스

List계열, Set계열, Map계열이 있고 각 계열별 특징과 구현 클래스를 설명해보면

List : 기본적으로 배열모양으로 되어있고 순서를 유지하고 중복 저장이 가능하다! / 구현 클래스 == ArrayList, Vector, LinkedList

Set : 주머니 모양으로 순서를 유지하지 않고 중복 데이터가 불가능하다. 구현 클래스 == HashSet, TreeSet

Map : 키와 값이 쌍으로 저장된다. 키는 중복이 안되지만 값은 중복이 가능하다! 구현 클래스 == HashMap, HashTable, TreeMap, Properties


List

자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며, 중복해서 객체 저장 가능하고 구현 클래스는 ArrayList와 Vector, LinkedLisk가 있다.

ArrayList

  • List의 후손으로 초기 저장 용량은 10으로 자동 설정 따로 지정도 가능
  • 저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능
  • 동기화(Synchronized)를 제공하지 않음
List<E> list = new ArrayList<E>();

Vector

  • List의 후손으로 ArrayList와 동등하지만 동기화(Synchronized)를 제공한다는 점이 ArrayList와 차이점이다.
    -> List 객체들 중 가장 성능이 좋지 않음

LinkedList

  • List의 후손으로, 인접 참조를 링크해 체인처럼 관리
  • 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞/뒤 링크만 변경하면 되기 때문에 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음

0개의 댓글