1οΈβ£ LinkedListλ₯Ό μ¬μ©ν Deque.
βLinkedListβ λ βDequeβ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€ μ€ νλλ‘, μμͺ½ λμμ μ½μ
κ³Ό μμ κ° κ°λ₯ν μ΄μ€ μ°κ²° 리μ€νΈ κΈ°λ°μ μλ£ κ΅¬μ‘°μ
λλ€.
βLinkedListβ λ βDequeβ λΏλ§ μλλΌ βListβ, βQueueβ μΈν°νμ΄μ€λ ꡬννμ¬ λ€μν ννλ‘ μ¬μ©ν μ μμ΅λλ€.
2οΈβ£ μ£Όμ νΉμ§.
-
μ΄μ€ λ ν : μμͺ½ λμμ μμλ₯Ό μΆκ°νκ³ μ κ±°ν μ μμ΅λλ€.
-
μ΄μ€ μ°κ²° 리μ€νΈ : κ° λ Έλλ μ΄μ λ Έλμ λ€μ λ Έλλ₯Ό κ°λ¦¬ν€λ λ κ°μ ν¬μΈν°λ₯Ό κ°μ§λλ€.
-
λΉλκΈ°μ : β
LinkedListβ λ λΉλκΈ°μ μΌλ‘ λμνλ―λ‘ λκΈ°νλ νκ²½μμ μμ νμ§ μμ΅λλ€.
3οΈβ£ μ£Όμ λ©μλ.
μ½μ μ°μ°.
-
β
addFirst(E e)β : μ§μ λ μμλ₯Ό λ±μ μμͺ½μ μΆκ°ν©λλ€. -
β
addLast(E e)β : μ§μ λ μμλ₯Ό λ±μ λ€μͺ½μ μΆκ°ν©λλ€. -
β
offerFirst(E e)β : μ§μ λ μμλ₯Ό λ±μ μμͺ½μ μΆκ°ν©λλ€. -
β
offerLast(E e)β : μ§μ λ μμλ₯Ό λ±μ λ€μͺ½μ μΆκ°ν©λλ€.
μμ μ°μ°.
-
β
removeFirst()β : λ±μ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€. -
β
removeLast()β : λ±μ λ€μͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€. -
β
pollFirst()β : λ±μ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€. -
β
pollLast()β : λ±μ λ€μͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.
μ‘°ν μ°μ°.
-
β
getFirst()β : λ±μ μμͺ½μ μλ μμλ₯Ό λ°νν©λλ€. -
β
getLast()β : λ±μ λ€μͺ½μ μλ μμλ₯Ό λ°νν©λλ€. -
β
peekFirst()β : λ±μ μμͺ½μ μλ μμλ₯Ό λ°νν©λλ€. -
β
peekLast()β : λ±μ λ€μͺ½μ μλ μμλ₯Ό λ°νν©λλ€.
μ€ν μ°μ°.
-
β
push(E e)β : μ€νμ 맨 μμ μμλ₯Ό μΆκ°ν©λλ€.(FIFO, First In First Out) -
β
pop()β : μ€νμ 맨 μμ μλ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.(LIFO, Last In First Out)
4οΈβ£ μκ° λ³΅μ‘λ
-
μ½μ
κ³Ό μμ μ°μ° : β
addFirstβ, βaddLastβ, βremoveFirstβ, βremoveLastβ, βofferFirstβ, βofferLastβ, βpollFirstβ, βpollLastβ λ±μ μ°μ°μ O(1)μ λλ€.- μ΄μ€ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μμͺ½ λμμμ μ½μ κ³Ό μμ λ μμ μκ° λ΄μ μνλ©λλ€.
-
μ‘°ν μ°μ° : β
getFirstβ, βgetLastβ, βpeekFirstβ, βpeekLastβ λ±μ μ°μ°μ O(1)μ λλ€. -
μμ μ κ·Ό μ°μ°( **β
get(int index)β, βset(int index, E element)β λ±) :** μΈλ±μ€λ₯Ό μ¬μ©ν μ κ·Ό μ°μ°μ 리μ€νΈμ μ€κ°μ μλ μμλ₯Ό μ°ΎκΈ° μν΄ λ¦¬μ€νΈλ₯Ό μνν΄μΌ νλ―λ‘ O(n) μκ°μ΄ 걸립λλ€.
5οΈβ£ μ½λ μμ.
μλ μ½λλ βLinkedListβ λ₯Ό βDequeβ λ‘ μ¬μ©νλ μμ μ
λλ€.
import java.util.Deque;
import java.util.LinkedList;
public class LinkedListDequeExample {
public static void main(String[] args) {
// LinkedListλ‘ Deque μμ±
Deque<Integer> deque = new LinkedList<>();
// μμ μ½μ
deque.addFirst(1);
deque.addLast(2);
deque.offerFirst(0);
deque.offerLast(3);
// μμ μ‘°ν
System.out.println("First element: " + deque.getFirst());
System.out.println("Last element: " + deque.getLast());
System.out.println("Peek first element: " + deque.peekFirst());
System.out.println("Peek last element: " + deque.peekLast());
// μμ μμ
System.out.println("Removed first element: " + deque.removeFirst());
System.out.println("Removed last element: " + deque.removeLast());
System.out.println("Poll first element: " + deque.pollFirst());
System.out.println("Poll last element: " + deque.pollLast());
// λ±μ ν¬κΈ°μ λΉμ΄ μλμ§ μ¬λΆ νμΈ
System.out.println("Deque size: " + deque.size());
System.out.println("Is deque empty? " + deque.isEmpty());
// μ€ν μ°μ°.
deque.push(4);
System.out.println("Pushed element: " + deque.peekFirst());
System.out.println("Popped element: " + deque.pop());
}
}
/*
=== μΆλ ₯ ===
First element: 0
Last element: 3
Peek first element: 0
Peek last element: 3
Removed first element: 0
Removed last element: 3
Poll first element: 1
Poll last element: 2
Deque size: 0
Is deque empty? true
Pushed element: 4
Popped element: 4
*/
πββοΈ μ€λͺ .
-
-
λ² μ΄ μ΄κΈ°ν : β
DEFAULT_CAPACITYβ ν¬κΈ°μ λ°°μ΄μ μ΄κΈ°ννκ³ , βheadβ, βtailβ, βsizeβ λ³μλ₯Ό μ΄κΈ°ν ν©λλ€.
-
λ² μ΄ μ΄κΈ°ν : β
-
-
μ½μ
μ°μ°( **β
addFirstβ, βaddLastβ) :** μμλ₯Ό λ±μ 첫 λ²μ§Έ λλ λ§μ§λ§μ μΆκ°ν©λλ€.
-
μ½μ
μ°μ°( **β
-
-
μμ μ°μ°( **β
removeFirstβ, βremoveLastβ) :** 첫 λ²μ§Έ μμμ λ§μ§λ§ μμλ₯Ό κ°κ° μ κ±°ν©λλ€.
-
μμ μ°μ°( **β
-
-
μ‘°ν μ°μ°( **β
getFirstβ, βgetLastβ, βpeekFirstβ, βpeekLastβ) :** 첫 λ²μ§Έ μμμ λ§μ§λ§ μμλ₯Ό λ°νν©λλ€.
-
μ‘°ν μ°μ°( **β
-
-
κΈ°ν λ©μλ : β
sizeβ μ βisEmptyβ λ©μλλ λ±μ ν¬κΈ°μ λΉμ΄ μλμ§ μ¬λΆλ₯Ό λ°νν©λλ€.
-
κΈ°ν λ©μλ : β
-
-
μ€ν μ°μ°( **β
pushβ, βpopβ) :** μ€νμ 맨 μμ μμλ₯Ό μΆκ°νκ³ , μ€νμ 맨 μμ μλ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.
-
μ€ν μ°μ°( **β
μ μμ μ½λμμλ β
LinkedListβ λ₯Ό βDequeβ λ‘ μ¬μ©νμ¬ λ€μν μ°μ°μ μννλ λ°©λ²μ 보μ¬μ€λλ€.
βLinkedListβ λ μ΄μ€ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μμͺ½ λμμμ μ½μ κ³Ό μμ κ° λΉ λ₯΄κ³ ν¨μ¨μ μ λλ€.