참고 사이트 - 링크 들어가서 보길 바람
1.컬렉션 프레임워크란? https://hudi.blog/java-collection-framework-1/
2.큐란 무엇일까? https://donggu1105.tistory.com/163
들어가기에 앞서 Remind ++
배열은 크기가 고정되어있는 반면에 컬렉션 프레임워크는 가변적인 특성을 지녔다.
데이터 삽입, 탐색, 정렬등 편리한 API를 활용할 수 있어 배열보다 컬렉션 클래스를 활용한다.
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++ 구현'
왜 '클래스가 인터페이스를 구현' 한다고 표현할까?
객체지향에서는 규칙이나 명세(기능이 어떻게 동작해야하는가에 대한 설명)를 인터페이스로 정의한다.
이 데이터를 처리하거나 기능을 구현하는 건 구체적인 클래스에서 이루어진다.
First in First Out (FIFO) - 선입선출 먼저 들어오면 먼저 나간다.
예를 들면 한 줄로 서 있는 구조등
큐에는 front와 rear이 있다.
front는 큐에서 데이터를 꺼내는 위치
rear을 데이터를 삽입하는 위치
예를들어서 데이터 크기가 5라고 가정
[0, 1, 2, 3, 4]
front은 0이다.
rear은 4이다.
dequeue() 호출 (꺼내는 함수)
0이 꺼내지고 front는 뒤로 이동하여 1을 가리킨다.
그렇다면 데이터 0이 있던 자리는? 빈공간처럼 보이게 된다.
점점 사용 가능한 범위가 줄어들며 꺼내진 자리는 재사용 되지 않는다
이를 보완하기 위해
원형 큐 같은 것들이 나옴