[Java] Collection - Stack & Queue

temprmn·2023년 5월 22일
0

🧒 Java 기초

목록 보기
3/9
post-thumbnail

[Java] Collection

Stack

StackLast-In-First-Out(후입선출) 구조로, 주로 상자에 비유해서 설명한다. 상자에 물건을 넣고 빼는 것처럼 밑에서부터 위로 쌓아가고, 꺼낼 때는 위에서부터 꺼내는 형식이다.

데이터를 밀어넣는 push()와 데이터를 조회하는 peek(), 데이터를 꺼내는 pop() 기능이 주를 이룬다.

중복처리를 막거나 최근 저장된 데이터를 나열할 때 사용한다.

1) 선언 및 생성

Stack<{참조 자료형}> {변수명} = new Stack<{참조 자료형}>();
Stack<Intager> intStack = new Stack<Integer>();

2) 값 추가

{변수명}.push({value});
intStack.push(1);
intStack.push(2);
intStack.push(3);

3) 값 조회

제일 위의 값 (= 가장 최근에 추가된 값)을 조회한다.

{변수명}.peek();
intStack.peek(); // [결과: 3]

4) 값 꺼내기

단순히 지우는 것뿐만 아니라, 가장 최근 값을 반환한다.

{변수명}.pop();
intStack.pop(); // [결과: 3]
intStack.pop(); // [결과: 2]

5) Stack이 비어있는지

비어있으면 참(True)을, 비어있지 않으면 거짓(False)을 반환한다.

{변수명}.isEmpty();
intStack.isEmpty(); // [결과: False]

6) Stack의 크기

Stack의 크기 = Stack에 저장된 데이터의 양(개수)이다.

{변수명}.size();
intStack.size(); // [결과: 1]

Queue

QueueFirst-In-First-Out(선입선출) 구조로, Stack과는 달리 제일 밑에 저장된 데이터부터 꺼내는 형태이다.

데이터를 추가하는 add()와 데이터를 조회하는 peek(), 데이터를 꺼내는 poll() 기능이 주를 이룬다.

Queue는 생성자가 없어서 바로 생성할 수 없고, LinkedList를 통하여 생성할 수 있다.

[Java] Collection - List 참고

1) 선언 및 생성

생성할 때 Queue가 아닌 LinkedList를 사용함에 주의할 것. new Queue<{참조 자료형}>();의 형태가 아니다.

Queue<{참조 자료형}> {변수명} = new LinkedList<{참조 자료형}>();
Queue<Intager> intQueue = new LinkedList<Integer>();

2) 값 추가

{변수명}.add({value});
intQueue.add(1);
intQueue.add(2);
intQueue.add(3);

3) 값 조회

제일 아래의 값 (= 현재 시점에서 첫번째가 되는 값)을 조회한다.

{변수명}.peek();
intQueue.peek(); // [결과: 1]

4) 값 꺼내기

단순히 지우는 것뿐만 아니라, 현재 시점에서 첫번째가 되는 값을 반환한다.

{변수명}.poll();
intStack.poll(); // [결과: 1]
intStack.poll(); // [결과: 2]

5) Queue가 비어있는지

비어있으면 참(True)을, 비어있지 않으면 거짓(False)을 반환한다.

{변수명}.isEmpty();
intQueue.isEmpty(); // [결과: False]

6) Queue의 크기

Queue의 크기 = Queue에 저장된 데이터의 양(개수)이다.

{변수명}.size();
intQueue.size(); // [결과: 1]

Stack vs Queue

StackvsQueue
입출력 순서LIFO (후입선출)FIFO (선입선출)
생성자 유무OX (LinkedList 사용)
데이터 추가push()add()
데이터 조회peek()peek()
데이터 삭제pop()poll()
profile
`ISFJ` T 49% F 51% /

0개의 댓글