2 분 소요

10은 건너 뛰셨음 *(੭*ˊᵕˋ)੭*ଘ

컬렉션 프레임웍

컬렉션 프레임웍(collrections framework )이란?

  • 컬렉션(collection)

여러 객체(데이터)를 모아 놓은 것을 의미

  • 프레임웍(framework)

    표준화, 정형화된 체계적인 프로그래밍 방식

  • 컬렉션 프레임웍(collrection framework)

    컬레션을 다루기 위한 표준화된 프로그래밍 방식

    컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공

    java.util패키지에 포함

  • 컬렉션 클래스(collection class)

    다수의 데이터를 저장할 수 있는 클래스

    Vertor, ArrayList, HashSet

컬렉션 프레임웍의 핵심 인터페이스

image-20240208094258137

  • List순서에 의미를 부여했기 때문에 중복 데이터를 허용하며 중요합니다.

  • Set은 중복데이터를 허용하지 않습니다. 그 대신 순서에 의미를 부여하지 않습니다.

  • Map키와 값쌍으로 구성되었습니다.키는 중복을 허용하지 않으며 값은 중복을 허용합니다. 키가 중복이 없어 정보를 찾을 때 유리합니다.

컬렉션 프레임웍의 동기화

  • 멀티쓰레드 프로그래밍에서는 컬렉션 클래스에 동기화 처리가 필요합니다.

  • Vector와 같은 구버전 클래스들은 자체적으로 동기화처리가 되어 있다.

  • ArrayList와 같은 신버전 클래스들은 별도의 동기화처리가 필요합니다.

  • Collection클래스는 다음과 같은 동기화 처리 메서드를 제공합니다.

    [주의] java.Collection은 인터페이스고 java.util.Collections는 클래스이다.

    image-20240208101150993

    동기화

    흔히 서로가 알고 있는 정보를 일치시키는 것을 말합니다. 컴퓨터 영역에서 보면 데이터를 일치시키는 겁니다. 이렇게 데이터를 일치시키고 일치하지 않는 오류를 피하기 위해서는 프로세스가 순차적으로 처리 되어야합니다.

    즉, 다양한 작업이 동시에 실시되는 게 아닌 요청을 보내고 응답을 받은 후 다음 동작을 실시하는 겁니다. 이러한 것을 동기화 방식이라고 합니다.

    무언가가 사용되거나 실행될 때 마구잡이로 실행되지 못하게 순서를 정해주는 역할입니다.

Vector와 ArrayList

  • ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 등일합니다.
  • List 인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용합니다.
  • 데이터의 저장공간으로 배열을 사용합니다.(배열기반)
  • Vector는 자체적으로 동기화처리가 되어 있으나 ArrayList는 그렇지 않습니다.

image-20240208102452781

Vector

image-20240208102515403

LinkedList - 배열의 단점을 보안

image-20240208121855674

LinkedList - 이중 연결 리스트

image-20240208122449827

LinkedList - 주요메서드

image-20240208122638856

ArrayList vs. LinkedList - 성능비교

image-20240208122804871

스택과 큐(Stack & Queue)

  • 스택

image-20240208122813441

컬렉션 프레임웍의 핵심 인터페이스

image-20240208141232684

해싱(hashing)

image-20240208142044308

  1. 키로 해시함수를 호출해서 해시코드를 얻는다.

  2. 해시코드(해시함수의 반환값)에 대응하는 링크드리스트를 배열에서 찾는다.

  3. 링크드리스트에서 키와 일피하는 데이터를 찾는다.

    • 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 합니다.

      서로 다른 키일지라도 같은 값으 해시코드를 반환할 수도 있습니다.

해시함수는 순서에 의미가 없음.

HashSet

image-20240208143926245

TreeSet -검색과 정렬에 유리

범위 검색과 정렬에 유리한 이진 검색 트리로 구현됩니다.

Set인터페이스를 구현한 컬렉션 클래스로 중복을 허용하지 않고 순서를 유지하지 않으며 정렬 저장합니다.

이진 검색트리(binary search tree-정렬과 검색에 유리)의 구조로 되어있습니다.

링크드리스트와 같이 각 요소(node)가 나무(tree)형태로 연결된 구조로 모든 트리는 하나의 루트(root node)를 가지며, 서로 연결된 두 요소를 부모 - 자식관계 에 있다 하고, 하나의 부모에 최대 두 개의 자식을 갖습니다.

왼쪽 자식의 값은 부모의 값보다 작은 값을, 오른쪽 자식의 값은 부모보다 큰 값을 저장합니다.

검색과 정렬에 유리하지만, HashSet보다 데이터 추가, 삭제시간이 더 걸립니다.

image-20240208144357545

TreeSet - 주요메서드

image-20240208163124244

Comparator와 Comparable

image-20240208160942565

image-20240208170241075

06번 상단 코드 캡쳐

Hashtable과 HashMap

  • HashMap은 Hashtable의 신버전이며,Hashtable과 달리 HashMap은 동기화 처리가 되어 있지 않습니다.
  • HashMap은 해싱기법을 사용해서 데이터를 저장하기 때문에 많은 양의 데이터를 검색할 때 성능이 뛰어납니다.
  • HashMap은 Map인터페이스를 구현하였으며, 데이터를 키와 값의 쌍으로 저장합니다.

image-20240208171321054

HashMap - 주요메서드

image-20240208171346403

카테고리:

업데이트:

댓글남기기