Java/Java 문법

[java] 자바, 큐 (Queue, Deque)

민돌v 2021. 4. 19. 20:33

큐(Queue)

FIFO(First in First out)

쉽게 말해서 큐는, 먼저들어간 데이터가 먼저 나가는 자료구조 형태이다.(선입선출)

1. java에서의 큐

(클래스 사용법)

Queue< E > q = new LinkedList< E >();

E : 자료형

2. 큐 함수

[삽입]

q.offer(Data);

[추출]

q.poll(); //맨 앞에 데이터 추출 후 삭제 
q.peek(); //맨 앞에 데이터 조회만(삭제 x)

[크기]

q.size(); q.isEmpty(); /비어있는지 확인

q.size();
q.isEmpty(); /비어있는지 확인

덱,데크(Deque)

Stack + Queue

1) 스택과 큐의 혼합형(?)

2) 스택의 장점과 큐의 장점을 둘다 사용할 수 있다.

3) 데이터의 추출과 삭제를 앞, 뒤로 할 수 있다.

4) 추천

1. java에서의 덱

(클래스 정의)

Deque< E > dq = new ArrayDeque< E >();

[예시]

Deque<Integer> dq = new ArrayDeque<Integer>(); 
Deque<int[]> dq = new ArrayDeque<int[]>();			//Deque 배열은 이렇게  

2. Deque 함수

[삽입]

dq.offer(1); //큐랑 같음 dq.offerFirst(1); //앞으로 삽입(큐와 반대) dq.offerLast(1); // 뒤로 삽입

dq.offer(1); //큐랑 같음 
dq.offerFirst(1); //앞으로 삽입(큐와 반대) 
dq.offerLast(1); // 뒤로 삽입

1) add, offer, push(push는 first, Last 사용 불가) 사용가능

2) 그래도 큐니까 offer로 하는게 안 헷갈림

[배열 삽입]

dq.offer(new int[]{5,4,1,....,});

dq.offer(new int[]{5,4,1,....,});

[추출]

dq.poll(1); //큐랑 같음 dq.pollFirst(1); //앞에꺼 추출 dq.pollLast(1); //뒤에꺼 추출(큐와 반대) dq.peek() //똑같이 first, Last 사용가능 dq.get() //peek()랑 똑같음

dq.poll(1); //큐랑 같음 
dq.pollFirst(1); //앞에꺼 추출 
dq.pollLast(1); //뒤에꺼 추출(큐와 반대) 
dq.peek() //똑같이 first, Last 사용가능 
dq.get() //peek()랑 똑같음

덱은 Stack 과 Queue의 결합이기 때문에

push, pop도 가능하다.