Set


// Set

// - 비선형 저장소

// - 중복이 허용되지 않는 저장소

// - 인덱스의 개념이 존재하지 않는다(인덱스 관련된 명령이 없다)

// - 순서가 이미 정해져 있는 저장소(ex : 전화번호부)

// - TreeSet : Tree 알고리즘이 적용된 저장소

// - HashSet : Hash 알고리즘이 적용된 저장소

// Set의 출력(전체탐색)

// - Set은 구조적으로 index가 존재할 수 없다.

// - index와 관련된 명령(ex : get(), indexOf()) 등이 없다

// - 대신 전체 조회할 수 있는 방법은 있다.

//              - 집합연산

//            = 합집합, 교집합, 차집합 등의 연산을 Set을 이용하여 처리할 수 있다.


Map


// Map

// = key-value 저장소

// = key : 식별을 위한 데이터(ex : 아이디, 변수명)

// = value : 중복이 가능한 데이터(ex : 비밀번호, 변수값)

// = key를 찾기만 하면 매우 빠른 속도로 value를 접근할 수 있음

// = 개별 데이터 관리에 특화

// = TreeMap, HashMap, Hashtable(비추천)

//  Map은 전체 출력이 안되나?

// = 되지만 조금 복잡하다

// = Map의 Key만 놓고보면 Set과 동일한 구조를 가진다.

// = Map에서 Key만 분리 ---> Set으로 저장 ---> 반복으로 Key를 추출 ---> Value 같이 추출



Stack이랑 Queue 차이점



// Stack

// = 잘 알려진 특수한 방식으로 운영되는 저장소

// = LIFO(Last-IN First-Out)방식의 저장소

// = List를 상속받았으나 List처럼 사용을 안한다

// = 이력관리 등에 유용하게 사용됨

// = 프로그램 메소드 실행, 하노이타워, 방문했던 사이트 이력, Ctrl+z키의 원리


// Queue

// = 대기열 형식의 데이터 처리가 가능한 저장소

// = FIFO(Fist-In First-Out, 선입선출) 형식의 저장소

// = 순차적인 실행이 필요한 경우 유용하게 사용됨

// = 메세지 큐, 입력 큐 등

// = Blocking이냐 Non-blocking 이냐 등에 따라서 다양한 형태가 존재




collection 개 재미없어 다음 진도 빨리나갔으면