2016-11-08 2 views
1

インタビュー担当者がArrayList、Linked list、Vectorについて聞いたインタビューのために登場しました。彼の質問は
ArrayList, LinkedList, and Vectorで、すべてListインターフェイスの実装です。リストから要素を追加したり削除したりするのに最も効率的なのはどれですか?私が気づいている可能性のある他の選択肢も含めて、私は答えたはずだった。
私は彼に答えましたが、彼は私の答えには感動しませんでした。
誰かがこれについてもっと教えてもらえますか?
ありがとうございましたリストから要素を追加したり削除したりするのに最適なArrayList、LinkedList、Vector

+1

http://stackoverflow.com/a/322742/4285290 – eldo

+0

彼はおそらく、あなたは基礎となる実装が働いたかについて知りたいと思った、との両方の長所/短所(ないに言及ベクターの年齢とそのスレッドの安全性に対する悪い試み) – Rogue

答えて

0

LinkedListはアイテムを追加/削除するのに最適です。現在の操作を達成するために他の無関係なアイテムを操作せずにアイテム間のリンクを変更するだけの理由があります。これにより、リンクされたリストが他のコンテナよりも比較的速くなります。

乾杯!

2
  • LinkedListは、ダブルリンクリストとして実装されています。追加と削除のパフォーマンスはArraylistよりも優れていますが、取得と設定の方法が悪いです。これらのケースでは、リストをある時点までトラバースする必要があります。だから、間違いなくLinkedListしないでください。

  • ArrayListは、サイズ変更可能な配列として実装されています。 ArrayListに追加される要素が増えると、そのサイズが動的に増加します。 ArrayListは基本的に配列なので、getおよびsetメソッドを使用して要素に直接アクセスできます。

  • ベクターはArrayListと似ていますが、同期しています。

プログラムがスレッドセーフである場合は、ArrayListを使用することをお勧めします。 VectorとArrayListは、より多くの要素が追加されるにつれ、より多くのスペースを必要とします。ベクターはその都度配列サイズを倍にしますが、ArrayListはその都度サイズの50%増加します。

LinkedListのは、しかし、また、など

多くは要件の種類に依存している以上、このようなオファーとのArrayListとベクトルより方法は、()、PEEK()、ポールを()を追加キューインタフェースを実装しますあなたが取り組んでいます。必要に応じて決定することができます。

0

リストに追加したり削除したりするデータがたくさんある場合はLinkedListを選択しますが、リストから要素を取得する場合は注意が必要です。これは正しいデータ構造ではないためです。

List<T> list = new LinkedList<T>(); 
関連する問題