컬렉션 (Collection)_List

Brogod97·2022년 12월 28일
0

KH TIL

목록 보기
26/37
post-thumbnail

컬렉션(Collection)

자바에서의 컬렉션 = 자료구조의 모음

  • List
  • Set
  • Map

메모리상에서 자료를 구조적으로 처리하는 방법을 자료구조라 일컫는데
(→ 배열)

컬렉션(Collection)은 자바에서 제공하는 자료구조를 담당하는 프레임워크

추가, 삭제, 정렬 등의 기능처리가 간단하게 해결 되어 자료구조적 알고리즘을 구현할 필요 없음

java.util 패키지에 포함되며, 인터페이스를 통해 정형화된 방법으로 다양한 컬렉션 클래스 이용 가능


자료구조

데이터(자료)를 메모리에서 구조적으로 처리하는 방법론이다.

C언어나 게임의 경우 일일히 구현해야 하지만 자바는 콜렉션으로 제공해준다


배열의 문제점 & 컬렉션의 장점

배열의 문제점

  1. 한 번 크기를 지정하면 변경할 수 없다.

    • 공간 크기가 부족하면 에러가 발생 → 할당 시 넉넉한 크기로 할당하게 됨 (메모리 낭비)
    • 필요에 따라 공간을 늘리거나 줄일 수 없음
  2. 배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불편하다.

    • 추가, 삭제할 데이터부터 마지막 기록된 데이터까지 하나씩 뒤로 밀어내고 추가해야 함 (복잡한 알고리즘)
  3. 한 타입의 데이터만 저장 가능하다.

컬렉션의 장점

  1. 저장하는 크기의 제약이 없다.

  2. 추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결된다.

    • 자료를 구조적으로 처리 하는 자료구조가 내장되어 있어 알고리즘 구현이 필요 없음
      • → ex) add() remove()
  3. 여러 타입의 데이터가 저장 가능하다.

    → 기본 자료형은 불가능

    • 객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우 ***Wrapper 클래스 사용 : 기본 자료형을 객체 형태로 감싸는 것 (8가지)* ⭐

      Boolean

      Character

      Byte

      Short

      Integer

      Long

      Float

      Double

      Integer.parseInt("10"); // 문자열 "10"을 정수형 10으로 변경
      
      Double.parseDouble("13.45"); // 문자열 13.45를 실수형 13.45로 변경

배열과 컬렉션의 차이점 ⭐

배열과 컬렉션의 차이점

  1. 배열은 크기를 지정해야 하고, 한 번 지정된 크기 변경 불가하지만 컬렉션은 크기에 제약이 없다.
  1. 배열은 중간에 값을 추가, 삭제, 정렬할 때 개발자가 직접 코드로 로직을 짜야한다.
    하지만 컬렉션에선 이미 자료구조적 알고리즘이 내장되어 있다.
    호출만으로 데이터를 효율적, 구조적 관리 가능하다.
  1. 배열은 한가지 타입의 여러개 데이터를 보관할 수 있다면, 컬렉션은 별도의 제네릭 설정을 하지 않을 경우 여러 타입의 여러개 데이터 보관 가능하다.

컬렉션의 주요 인터페이스

List, Set, Map은 인터페이스임

인터페이스 ( == 접점 )

관련 없는 것들을 연결

공통된 메서드명 제공해서 규약을 만듦


Java Collection : 자바의 자료구조 모음

(List, Set, Map)

아래 표의 Collection은 List, Set의 중복 코드를 뽑아서 만든 인터페이스 Collection임

add() remove()

  • Map엔 put() 이라는 애가 있음 (차이)

List

자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며, 중복해서 객체 저장 가능

구현 클래스로 ArrayList와 Vector, LinkedList가 있음

List 계열 주요 메소드


ArrayList

List의 후손으로 초기 저장 용량은 10으로 자동 설정되며 따로 지정도 가능

저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능

동기화(Synchronized)를 제공하지 않음

→ Vector, LinkedList는 제공함

예) List list = new ArrayList();

* 동기화 : 하나의 자원(데이터)에 대해 여러 스레드가 접근 하려 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것


0개의 댓글