른록노트

[DataStructure] ArrayDeque (Java) 본문

Programming/[DataStructure]

[DataStructure] ArrayDeque (Java)

른록 2022. 1. 24. 21:34

1. ArrayDeque

Java 11

Module java.base
Package java.util
Class ArrayDeque<E>

java.lang.Object
    java.util.AbstractCollection<E>
        java.util.ArrayDeque<E>

Type Parameters:
E - the type of elements held in this deque

All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>
public class ArrayDeque<E>
extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable

Deque 인터페이스의 크기 조정 가능한 배열 구현입니다. ArrayDeque에는 용량 제한이 없습니다. 그들은 사용을 지원하기 위해 필요에 따라 성장합니다. ArrayDeque 동기화 되어있지 않습니다. 외부 동기화가 없는 경우 여러 스레드에 의한 동시 액세스를 지원하지 않습니다. Null 요소는 금지됩니다. 이 클래스는 Stack으로 사용할 때 Stack보다 빠르며 Queue로 사용할 때 LinkedList보다 빠를 수 있습니다.

대부분의 ArrayDeque 작업은 상각된 일정 시간에 실행됩니다. 예외로는 remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove() 및 대량 작업이 있으며 모두 선형 시간으로 실행됩니다.

이 클래스의 반복자 메서드에서 반환된 반복자는 페일패스트입니다.:반복자가 생성된 후 언제라도 Deque가 수정되면 반복자의 자체 제거 메서드를 통하지 않고 어떤 방식으로든 반복자는 일반적으로 ConcurrentModificationException을 throw합니다. 따라서 동시 수정에 직면하여 반복자는 미래의 불확실한 시간에 임의적이고 비결정적인 동작의 위험을 감수하기보다는 빠르고 깔끔하게 실패합니다.

iterator의 fail-fast 동작은 일반적으로 동기화되지 않은 동시 수정이 있는 경우 확실한 보장을 하는 것이 불가능하기 때문에 보장할 수 없습니다. Fail-fast iterator는 최선을 다해 ConcurrentModificationException을 발생시킵니다. 따라서 정확성을 위해 이 예외에 의존하는 프로그램을 작성하는 것은 잘못된 것입니다. 반복기의 빠른 실패 동작은 버그를 감지하는 데만 사용해야 합니다.

이 클래스와 반복자는 Collection 및 Iterator 인터페이스의 모든 선택적 메서드를 구현합니다.

이 클래스는 Java Collections Framework의 멤버입니다.

Since:
1.6
See Also:
Serialized Form

반응형
Comments