Collection Framework

keyCat·2024년 11월 19일

자바

목록 보기
2/5

참고 사이트 - 링크 들어가서 보길 바람
1.컬렉션 프레임워크란? https://hudi.blog/java-collection-framework-1/
2.큐란 무엇일까? https://donggu1105.tistory.com/163

들어가기에 앞서 Remind ++

  • 배열

  1. 여러개의 데이터를 저장하기 위한 것
  2. 초기화는 자료형에 따라 달라진다 (정수는 0 실수는 0.0 객체는 null)
  • 배열의 특징

  1. 한번 크기가 정해지면 크기를 변경할 수 없다.
    크기를 변경하기 위해선 새로운 배열을 생성해야한다.

컬렉션 프레임워크

배열은 크기가 고정되어있는 반면에 컬렉션 프레임워크는 가변적인 특성을 지녔다.
데이터 삽입, 탐색, 정렬등 편리한 API를 활용할 수 있어 배열보다 컬렉션 클래스를 활용한다.

특징

  1. List, Queue, Set, Map등 인터페이스 제공
  2. 가변적인 특성

구성요소

  • 인터페이스 : List 형태의 컬렉션(List외 다른 인터페이스들도 존재)이 따라야 할 공통된 규칙이 정의되어 있다.
  • 클래스: List 인터페이스의 규칙을 구현한 클래스(ArrayList<>() 클래스 불러서 사용중인거다)
    예를들면 가방의 공통된 특징을 묶은게 인터페이스 그 가방이 브랜드별로 나뉘는게 클래스

종류

List : 순서, 중복X
Queue : 순서대로 출력되는 선입선출(FIFO: First In First Out) 구조
Set : 순서X 중복X, 집합 연산 지원
Map : Key-value 저장, 순서X


GPT한테 도표 부탁하니 워드 파일 던져줌

컬렉션 프레임워크는 Collection / Map으로 나뉨
Map 인터페이스는 Collection을 상속받지 않는다. (자세한건 상단 링크 참고)

List는 인터페이스이기 때문에 인스턴스를 생성할 수 없다.

List<E>lists = new ArrayList<>(); //클래스로 객체 생성 

depth1++ 구현'
왜 '클래스가 인터페이스를 구현' 한다고 표현할까?
객체지향에서는 규칙이나 명세(기능이 어떻게 동작해야하는가에 대한 설명)를 인터페이스로 정의한다.
이 데이터를 처리하거나 기능을 구현하는 건 구체적인 클래스에서 이루어진다.

Queue

First in First Out (FIFO) - 선입선출 먼저 들어오면 먼저 나간다.
예를 들면 한 줄로 서 있는 구조등

큐의 문제

큐에는 front와 rear이 있다.
front는 큐에서 데이터를 꺼내는 위치
rear을 데이터를 삽입하는 위치
예를들어서 데이터 크기가 5라고 가정
[0, 1, 2, 3, 4]
front은 0이다.
rear은 4이다.
dequeue() 호출 (꺼내는 함수)
0이 꺼내지고 front는 뒤로 이동하여 1을 가리킨다.
그렇다면 데이터 0이 있던 자리는? 빈공간처럼 보이게 된다.
점점 사용 가능한 범위가 줄어들며 꺼내진 자리는 재사용 되지 않는다

이를 보완하기 위해
원형 큐 같은 것들이 나옴

profile
취준생 개발로그 /ᐠ •ヮ• マ Ⳋ

0개의 댓글