ποΈ μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦/μ½λ©ν
μ€νΈ
[λ©μλ] ArrayDeque ν΄λμ€ λ©μλ
OR15A
2023. 11. 30. 07:48
ArrayDeque ν΄λμ€
- ArrayDeque λ λ°°μ΄μ κΈ°λ°μΌλ‘ νλ λλΈ μλ ν(double-ended queue)λ₯Ό ꡬνν Java ν΄λμ€
- ArrayDeque λ Queue μΈν°νμ΄μ€μ Deque μΈν°νμ΄μ€λ₯Ό ꡬννλ©°, μ€νκ³Ό νμ κΈ°λ₯μ λͺ¨λ μ 곡ν¨
μμ±μ
- ArrayDeque():
- λΉ ArrayDequeλ₯Ό μμ±ν©λλ€.
- ArrayDeque(int numElements):
- μ§μ λ μ΄κΈ° μ©λμ κ°μ§ ArrayDequeλ₯Ό μμ±ν©λλ€.
- ArrayDeque(Collection<? extends E> c):
- μ£Όμ΄μ§ 컬λ μ μ μμλ₯Ό ν¬ν¨νλ ArrayDequeλ₯Ό μμ±ν©λλ€.
μ£Όμ λ©μλ
- void addFirst(E e):
- νμ μμͺ½μ μμλ₯Ό μΆκ°ν©λλ€.
- void addLast(E e):
- νμ λ€μͺ½μ μμλ₯Ό μΆκ°ν©λλ€.
- boolean addAll(Collection<? extends E> c):
- 컬λ μ μ λͺ¨λ μμλ₯Ό νμ μΆκ°ν©λλ€.
- boolean offerFirst(E e):
- νμ μμͺ½μ μμλ₯Ό μΆκ°νκ³ , μ±κ³΅ μ¬λΆλ₯Ό λ°νν©λλ€.
- boolean offerLast(E e):
- νμ λ€μͺ½μ μμλ₯Ό μΆκ°νκ³ , μ±κ³΅ μ¬λΆλ₯Ό λ°νν©λλ€.
- E removeFirst():
- νμ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.
- E removeLast():
- νμ λ€μͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.
- E pollFirst():
- νμ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°ννλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
- E pollLast():
- νμ λ€μͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°ννλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
- E getFirst():
- νμ μμͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμ΅λλ€.
- E getLast():
- νμ λ€μͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμ΅λλ€.
- E peekFirst():
- νμ μμͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμΌλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
- E peekLast():
- νμ λ€μͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμΌλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
- boolean removeFirstOccurrence(Object o):
- μ£Όμ΄μ§ κ°μ²΄μ μΌμΉνλ 첫 λ²μ§Έ μμλ₯Ό νμμ μ κ±°ν©λλ€.
- boolean removeLastOccurrence(Object o):
- μ£Όμ΄μ§ κ°μ²΄μ μΌμΉνλ λ§μ§λ§ μμλ₯Ό νμμ μ κ±°ν©λλ€.
Queue μΈν°νμ΄μ€ λ©μλ
- boolean add(E e):
- νμ λ€μͺ½μ μμλ₯Ό μΆκ°ν©λλ€.
- boolean offer(E e):
- νμ λ€μͺ½μ μμλ₯Ό μΆκ°νκ³ , μ±κ³΅ μ¬λΆλ₯Ό λ°νν©λλ€.
- E remove():
- νμ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€.
- E poll():
- νμ μμͺ½μμ μμλ₯Ό μ κ±°νκ³ λ°ννλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
- E element():
- νμ μμͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμ΅λλ€.
- E peek():
- νμ μμͺ½ μμλ₯Ό λ°ννμ§λ§ μ κ±°νμ§λ μμΌλ©°, νκ° λΉμ΄μμΌλ©΄ nullμ λ°νν©λλ€.
Stack λ©μλ
- void push(E e):
- μ€νμ μμλ₯Ό μΆκ°ν©λλ€. addFirstμ λμΌν©λλ€.
- E pop():
- μ€νμμ μμλ₯Ό μ κ±°νκ³ λ°νν©λλ€. removeFirstμ λμΌν©λλ€.
Collection μΈν°νμ΄μ€ λ©μλ
- int size():
- νμ μλ μμμ μλ₯Ό λ°νν©λλ€.
- boolean isEmpty():
- νκ° λΉμ΄ μλμ§ μ¬λΆλ₯Ό λ°νν©λλ€.
- Iterator<E> iterator():
- νμ μμμ λν λ°λ³΅μλ₯Ό λ°νν©λλ€.
- Iterator<E> descendingIterator():
- νμ μμμ λν μλ°©ν₯ λ°λ³΅μλ₯Ό λ°νν©λλ€.
- Spliterator<E> spliterator():
- νμ μμμ λν μ€ν리ν°λ μ΄ν°λ₯Ό λ°νν©λλ€.
- void forEach(Consumer<? super E> action):
- νμ κ° μμμ λν΄ μ£Όμ΄μ§ μμ μ μνν©λλ€.
- boolean removeIf(Predicate<? super E> filter):
- μ£Όμ΄μ§ 쑰건μ λ§λ μμλ₯Ό νμμ μ κ±°ν©λλ€.
- boolean removeAll(Collection<?> c):
- μ§μ λ 컬λ μ μ μλ μμλ₯Ό λͺ¨λ νμμ μ κ±°ν©λλ€.
- boolean retainAll(Collection<?> c):
- μ§μ λ 컬λ μ μ μλ λͺ¨λ μμλ₯Ό νμμ μ κ±°ν©λλ€.
- boolean contains(Object o):
- νκ° μ§μ λ κ°μ²΄λ₯Ό ν¬ν¨νκ³ μλμ§ μ¬λΆλ₯Ό λ°νν©λλ€.
- boolean remove(Object o):
- μ£Όμ΄μ§ κ°μ²΄μ μΌμΉνλ μμλ₯Ό νμμ μ κ±°ν©λλ€.
- void clear():
- νμ λͺ¨λ μμλ₯Ό μ κ±°ν©λλ€.
- Object[] toArray():
- νμ λͺ¨λ μμλ₯Ό ν¬ν¨νλ λ°°μ΄μ λ°νν©λλ€.
λλ¨Έμ§ μ£Όμ κ³΅κ° λ©μλ
- <T> T[] toArray(T[] a):
- μ€λͺ : νμ λͺ¨λ μμλ₯Ό ν¬ν¨νλ λ°°μ΄μ λ°νν©λλ€. λ©μλ μΈμλ‘ μ£Όμ΄μ§ λ°°μ΄ νμ μ μ¬μ©ν©λλ€.
- private <T> T[] toArray(Class<T[]> klazz):
- μ€λͺ : λ΄λΆμ μΌλ‘ μ¬μ©λλ λ©μλλ‘, νΉμ ν΄λμ€ νμ μ λ°°μ΄μ μμ±νμ¬ νμ μμλ₯Ό μ΄ λ°°μ΄μ λ΄μ λ°νν©λλ€.
- private void writeObject(java.io.ObjectOutputStream s):
- μ€λͺ : μ§λ ¬ν κ³Όμ μμ ArrayDequeμ μνλ₯Ό μ°κΈ° μν΄ μ¬μ©λ©λλ€.
- private void readObject(java.io.ObjectInputStream s):
- μ€λͺ : μμ§λ ¬ν κ³Όμ μμ ArrayDequeμ μνλ₯Ό μ½μ΄λ€μ΄κΈ° μν΄ μ¬μ©λ©λλ€.
- void checkInvariants():
- μ€λͺ : ArrayDequeμ λ΄λΆ μνκ° μ¬λ°λ₯Έμ§ νμΈνκΈ° μν λ©μλμ λλ€.
λ΄λΆμ μ¬μ© λ©μλ λ° κ΅¬ν
ArrayDequeμλ transient Object[] elements, transient int head, transient int tail λ±μ νλμ grow, newCapacity, copyElements, circularClear λ±μ λ΄λΆ λ©μλκ° μμ΅λλ€. μ΄λ€μ λλΆλΆ ArrayDequeμ λ΄λΆ ꡬνκ³Ό κ΄λ ¨μ΄ μμΌλ©°, ArrayDequeμ ν¬κΈ° μ‘°μ , μμ 볡μ¬, λ°°μ΄ μν λ±μ κΈ°λ₯μ μνν©λλ€.
transient Object[] elements; transient int head; transient int tail; private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; private void grow(int needed) { private int newCapacity(int needed, int jump) { public ArrayDeque() public ArrayDeque(int numElements) public ArrayDeque(Collection<? extends E> c) static final int inc(int i, int modulus) static final int dec(int i, int modulus) static final int inc(int i, int distance, int modulus) static final int sub(int i, int j, int modulus) public void addFirst(E e) public void addLast(E e) public boolean addAll(Collection<? extends E> c) private void copyElements(Collection<? extends E> c) public boolean offerFirst(E e) public boolean offerLast(E e) public E removeFirst() public E removeLast() public E pollFirst() public E pollLast() public E getFirst() public E getLast() public E peekFirst() public E peekLast() public boolean removeFirstOccurrence(Object o) public boolean removeLastOccurrence(Object o) [Queue methods ] public boolean add(E e) public boolean offer(E e) public E remove() public E poll() public E element() public E peek() [Stack methods] public void push(E e) public E pop() boolean delete(int i) [Collection Methods *** ] public int size() public boolean isEmpty() public Iterator<E> iterator() public Iterator<E> descendingIterator() private class DeqIterator public Spliterator<E> spliterator() final class DeqSpliterator public void forEach(Consumer<? super E> action) public boolean removeIf(Predicate<? super E> filter) public boolean removeAll(Collection<?> c) public boolean retainAll(Collection<?> c) private boolean bulkRemove(Predicate<? super E> filter) private static long[] nBits(int n) private static void setBit(long[] bits, int i) private static boolean isClear(long[] bits, int i) private boolean bulkRemoveModified public boolean contains(Object o) public boolean remove(Object o) public void clear() private static void circularClear(Object[] es, int i, int end) public Object[] toArray() private <T> T[] toArray(Class<T[]> klazz) private void writeObject(java.io.ObjectOutputStream s) private void readObject(java.io.ObjectInputStream s) void checkInvariants()