VectorクラスとArrayDequeクラスの違いは何ですか?私はArrayDequeクラスについて昨日読んでいましたが、以前はVectorクラスを使っていました。VectorクラスとArrayDequeクラス
答えて
いくつかの相違点:ArrayDequeはQueue
インタフェースを実装するのに対し、
- ベクターは、
List
インタフェースを実装しています。これらは異なる操作セットを提供する異なるインタフェースです:ベクトルはあなたのバニラコンテナですが、、offer
などのメソッドを持っているため、*Queue
はマルチスレッドアプリケーション(プロデューサ/コンシューマパターン) - ベクタースレッドセーフ(同期が組み込まれています)の場合、ArrayDequeはスレッドセーフではありません。
- バージョン1.0以降のJDK、バージョン1.6以降のArrayDequeに含まれるベクター。
基礎は、次のとおり
Vector
が要素のインデックスベースのアクセスを可能にするコンテナを定義java.util.List
を実装します。また、interface RandomAccess
も実装されています。これは、基礎となる表現が素早く(通常はO(1)
)要素にアクセスできることをユーザーに示します。
ArrayDeque
は、コンテナの最初と最後から素早い要素の追加と削除をサポートするコンテナを定義します。java.util.Deque
を実装しています。
主な相違点:
Vector
List.add(int index, E element)
又はList.addAll(int index, Collection<? extends E> c)
のオーバーロードされたバージョンを使用して、容器の中央に要素を追加サポート。Vector
は、remove
メソッドを使用して、コンテナの中央から要素を削除することをサポートします。Vector
のset
とsetElementAt
方法は、(別の1、O(1)
操作でVector
に一つのオブジェクトを置き換える)あなたはインプレース要素の交換を行うことができます。add
Vector
の終わりまでは一定時間償却される。ベクトルの先頭または中央に追加するのは線形時間演算(O(n)
)です。ArrayDeque
は、コンテナの表裏両方の要素の追加/削除を一定時間償却した(O(1)
)。ArrayDeque
では、コンテナ内の特定の位置の要素を削除することはできません。クラスのさまざまなremove
,removeFirst
、およびremoveLast
のメソッドを使用すると、要素の削除が少し制限されます。
キュー(ArrayDeque
peek
、poll
、add
、addFirst
)のようなクラスを使用する方法と、スタック(offer
、push
、pop
、peekLast
、addLast
)のように来る、またはそれが故に理由の両方(のようなDouble-Ended Queue)。ArrayDeque
には、両端キューの中央に要素を追加する機能はありません。Vector
には、特別ながあります。これにより、コンテナ内の特定の場所から開始されるイテレータを取得し、要素の追加、削除、および設定をサポートします。ArrayDeque
のイテレータは、これらの余分なメソッドをサポートしていません。Vector
は同期コンテナです。つまり、マルチスレッド環境で同期/ロックを実行するためのコードが既に含まれています。ArrayDeque
については、コンテナへのマルチスレッドアクセスを行っている場合は、独自の同期コードを提供する必要があります。ArrayList
は、Vector
の非同期対応です。
- 1. データベースVectorクラスとフレームワークVectorクラスを区別する方法は?
- 2. クラスのstd :: Vectorメンバーをエクスポート
- 3. 問題VectorがcontainsクラスにあるときのVectorのaddAll()関数の使用
- 4. ArrayDequeのサイズと内容
- 5. ZipPackageクラスとZipfileクラス
- 6. Vectorから派生クラスのオブジェクトにアクセスする
- 7. C++および演算子[]のカスタムVectorおよびMatrixクラス
- 8. 可変クラスと不変クラス
- 9. C#ライブラリとクラスのクラス図
- 10. C#親クラスと子クラス - 親クラスから子を選ぶ
- 11. 別のクラスのデータメンバーとしてのクラス
- 12. Javaのデザイン:クラスとクラスの拡張子
- 13. クラスとその派生クラスのC++メモリプール
- 14. S1クラスとS2クラスは何ですか?
- 15. 継承クラスのRubyとクラス変数
- 16. enumクラスとenumクラスの違いは?
- 17. GraphViewerクラスとGraphEditorViewerクラスの関係
- 18. pythonクラスのインスタンス変数とクラス変数
- 19. クラスごとのDelphiクラス変数
- 20. クラスと内部クラスのアクセス修飾子
- 21. クラスCのクラスのゲッターとセッター#
- 22. 構造体のクラスとファクトリのクラス
- 23. 抽象クラスの拡張クラスとDAO
- 24. Ruby/Rails - Presenterクラスのクラスとインスタンスメソッド
- 25. 配列の代わりにVectorからクラス関数を呼び出す
- 26. std :: vectorから派生したクラスのconstオブジェクトを作成できません
- 27. PHPセッションとクラス
- 28. 構造とクラス
- 29. Javaクラスとコンストラクタ
- 30. HtmlHelperクラスとビルドエラー