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
β λ μ΄μ€ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μμͺ½ λμμμ μ½μ κ³Ό μμ κ° λΉ λ₯΄κ³ ν¨μ¨μ μ λλ€.