결과 :
<해시>
*HashMap
-> 키와 값을 저장하는 자료 구조 !
: 삽입 -> put()
: 검색 -> get()
장점 : 삽입, 삭제 시간 매우 빠름, 검색 더 빠름
단점 : 키로만 접근 할 수 있음
=> 빠른 삽입, 검색이 필요한 응용에 적합 !
*HashSet
-> 중복 x -> 값 추가 or 삭제할 때 그 값이 set내부에 있는 지 검색한뒤 작업을 수행 -> 속도가 list 구조보다 느림
-> 정렬 x , TreeSet은 자동 정렬!
ex) 방문 손님 총 숫자 -> 여러 번 방문한 손님 한번으로 체크해야함 !
*삽입 : add()
*삭제 : remove()
clear() (초기화)
*출력 -> Iterator 사용
ex) Iterator iter = set.Iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
*contains() : 내부에 값이 있는지 check -> ex) set.contains(1) -> set 내부에 값 1이 있는지 !
<스택>
: LIFO(Last In First Out) -> 먼저 들어간게 나중에 나옴 !
: 시스템 해킹에서 버퍼오버플로우 취약점 이용한 공격 시 스택 메모리의 영역에서 함!
: 인터럽트 처리, 수식 계산, 서브루틴의 복귀 번지 저장 등에 쓰임 !
: 그래프의 깊이 우선 탐색(DFS)에서 사용 !
: 재귀 함수를 호출할 때 사용 !
*삽입 : push()
*삭제 : pop() -> 가장 위쪽에 있는 원소 제거 ! , 모두 제거하고 싶으면 clear()
*출력(삭제x) : peek()
*사이즈 : size()
*비어있는지 : empty()
*해당 원소가 있는 지 : contatins()
ex)stack.contains(1) -> stack에 1이 있는지 check
<큐>
: 줄을 지어 순서대로 처리 되는 구조 !
-> FIFO(First In First Out) -> 먼저 들어온 데이터가 가장 먼저 나감 !
: 한쪽 끝은 front로 삭제 연산만 수행, 다른 한 쪽 끝은 rear로 삽입 연산만 수행 !
: 그래프의 넓이 우선 탐색(BFS)에서 사용 !
: 컴퓨터 버퍼에서 주로 사용, 입력이 여러갠 데 처리 못할 때 버퍼(큐)를 만들어 대기시킴 !
*선언 : Java에서 큐는 LinkedList를 활용하여 생성 !
Queue<Element> queue = new LinkedList<>();
*삽입(enqueue) : add(), offer()
*삭제(dequeue) : remove() -> queue 첫 번째 값 제거 !
: poll() -> 첫 번째 값 반환하고 제거
: clear() -> 초기화
*출력(삭제x) : peek() -> 큐에 첫번째로 저장된 값 참조 !
다음시간에는 이를 토대로 프로그래머스 사이트에서 관련 문제를 해결하고자 한다. 🔥😄