Vector 및 ArrayDeque 클래스 간의 차이점은 무엇입니까? 어제 ArrayDeque 클래스에 대해 읽었으며, 전에 Vector 클래스를 사용했습니다.Vector 및 ArrayDeque 클래스
답변
몇 가지 차이점 :의 ArrayDeque는 Queue
인터페이스를 구현하는 반면
- 벡터,
List
인터페이스를 구현합니다. 이러한 작업의 다른 세트를 제공하는 다른 인터페이스이다 : 그것은 등등poll
,offer
등의 방법이 있기 때문에*Queue
는 멀티 스레드 애플리케이션 (생산자/소비자 패턴)을 향해 더 지향되는 반면, 벡터, 당신의 바닐라 컨테이너입니다; - 벡터 스레드 안전 (내장 된 동기화 기능이 있음) ArrayDeque는 스레드로부터 안전하지 않습니다.
- 벡터 버전 1.6 이후의 ArrayDeque, 버전 1.0 이후 JDK에 포함되어 있습니다.
기본 사항은 다음과
Vector
요소에 인덱스 기반 액세스를 허용하는 용기를 정의 java.util.List
을 구현한다. 또한 interface RandomAccess
을 구현하여 기본 표현이 요소에 대한 빠른 액세스 (일반적으로 O(1)
)를 허용한다는 것을 사용자에게 나타냅니다.
ArrayDeque
은 컨테이너의 시작과 끝 부분에서 빠른 요소 추가 및 제거를 지원하는 컨테이너를 정의합니다.
주요 차이점 :
Vector
는List.add(int index, E element)
또는List.addAll(int index, Collection<? extends E> c)
의 오버로드 된 버전을 사용하여, 용기의 중간에 요소를 추가 지원한다.Vector
은remove
메서드를 사용하여 컨테이너 가운데에서 요소를 제거 할 수 있습니다.Vector
의set
및setElementAt
방법은 당신이 현재 위치에서 요소 스왑 (다른 하나와Vector
에서 하나의 객체,O(1)
작업을 대체) 할 수 있습니다.의 끝 부분은 상각 된 상수 시간입니다. 벡터의 처음이나 중간에 추가하는 것은 선형 시간 연산 (
O(n)
)입니다.ArrayDeque
은 컨테이너의 전후방에 요소를 추가/삭제하는 상각 시간 (O(1)
)을 상각했다.ArrayDeque
은 특별히 컨테이너의 특정 위치에 요소를 제거 할 수 없습니다. 클래스의 다양한
큐 (ArrayDeque
peek
,poll
,add
,addFirst
) 같은 클래스를 사용하는 방법으로하고 스택 (offer
,push
,pop
,peekLast
,addLast
)처럼 제공하거나이있다 따라서 왜 모두 (추천 Double-Ended Queue).ArrayDeque
은 양면 큐의 중간에 요소를 추가 할 수 없습니다.Vector
에는 특수한이 있으며 컨테이너의 특정 위치에서 시작하는 반복기를 가져올 수 있으며 요소 추가, 제거 및 설정을 지원합니다.ArrayDeque
의 반복기는 이러한 추가 메서드를 지원하지 않습니다.Vector
은 동기화 컨테이너입니다. 즉, 이미 멀티 스레드 환경에서 동기화/잠금을 수행하는 코드가 포함되어 있습니다.ArrayDeque
의 경우 컨테이너에 대한 다중 스레드 액세스를 수행하는 경우 자체 동기화 코드를 제공해야합니다.ArrayList
은Vector
과 비 동기화 된 카운터입니다.
remove
,
removeFirst
및
removeLast
방법은 약간 더 제한 요소를 제거 할 수 있습니다.
- 1. ArrayDeque 클래스 문자
- 2. Iterator over Vector 클래스 (배열)
- 3. C++ 및 연산자 []의 사용자 정의 Vector 및 Matrix 클래스
- 4. ActionCommand 및 Vector
- 5. std :: vector 및 winapi windows
- 6. 객체의 동적 배열 Sans Vector 클래스
- 7. ArrayDeque 인터페이스 Queue 인터페이스와 동일한 메소드
- 8. std :: vector 또는 boost :: vector 스레드가 안전합니까?
- 9. multithread vector
- 10. std :: vector, std :: map 및 메모리 문제
- 11. std :: vector 문제
- 12. fusion :: vector + fusion :: push_back = fusion :: vector?
- 13. std :: vector (matlab) isempty :: vector (C++)
- 14. Vector ArrayIndexOutOfBounds
- 15. C++ : std :: vector 및 input interator
- 16. Java Vector 및 JTable 사용시 문제가 발생했습니다.
- 17. vector, deque 및 목록에 대한 push_back
- 18. 클래스 문제 및 유형
- 19. 템플릿 인 클래스 및 클래스 속성
- 20. C++ boost mpl vector
- 21. 추상 클래스 및 포인터
- 22. std :: vector optimization required
- 23. ArrayDeque 반복자를 사용하여 균일 비용 검색 메서드를 만들려고 시도했습니다.
- 24. C++ std :: vector problems
- 25. Igraph에서 std :: vector 사용
- 26. Vector 클래스에서 Vector Package와 같은 removeElement 함수의 버전이 있습니까?
- 27. itdate std :: vector <std :: vector <char>>?
- 28. C++ std :: vector 요소를 사용하여 std :: vector 요소를 재정렬하십시오.
- 29. construct vector C++
- 30. 구조체의 std :: vector 초기화하기