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. Renjin/Java - VectorクラスからJava配列クラス
- 3. Vector :: Vectorの継承継承クラス
- 4. クラスのstd :: vectorのデストラクタ
- 5. クラスのstd :: Vectorメンバーをエクスポート
- 6. ConcurrentLinkedDequeとArrayDeque
- 7. Vectorクラスのoperator =を作る方法は?
- 8. 問題VectorがcontainsクラスにあるときのVectorのaddAll()関数の使用
- 9. ArrayDequeのサイズと内容
- 10. Arraydeque intermixed operations
- 11. ArrayDequeのイテレータ
- 12. ZipPackageクラスとZipfileクラス
- 13. クラスと基本クラス
- 14. スカラ - Vectorのクラスを取得するには?
- 15. 基本クラスのstd :: vectorの部分クラステンプレートの特殊化
- 16. C++および演算子[]のカスタムVectorおよびMatrixクラス
- 17. Vectorから派生クラスのオブジェクトにアクセスする
- 18. 角度クラスとngのクラス
- 19. phpクラスと拡張クラス
- 20. 可変クラスと不変クラス
- 21. C#ライブラリとクラスのクラス図
- 22. Rails 5 - created_atクラスとupdated_atクラス
- 23. 親クラスと子クラスのドクトリンリレーション
- 24. PHP:親クラスと子クラス
- 25. MongoClientクラスとMongoDB \ Driver \ Managerクラス
- 26. 継承クラスと汎用クラス
- 27. Java - 宣言クラスとクラスオブジェクトの違い(クラスとクラス)
- 28. C#親クラスと子クラス - 親クラスから子を選ぶ
- 29. クラスfoo、クラスfoo()とクラスfoo(オブジェクト)の違いは?
- 30. C++ユーザー定義クラスを作成してそのクラスのstd :: vectorにクラスの特定のメンバーが含まれないようにする方法