2つのオブジェクトの基本的な違いは何ですか?もう一つ効率的ですか? 1つ以上のメソッドがありますか?List対ArrayListとは何ですか?
答えて
リストはインターフェイスにあり、ArrayListはクラスです。
ArrayListおよびListを参照してください。それはインターフェースなので...
List<String> list = new List<String>();
:
例えば、あなたは、この設定を使用することはできません。
しかし、この作品:duffymoは以下の言うよう
ArrayList<String> arrayList = new ArrayList<String>();
をも...あなたはList
インターフェース(独自のリストの実装を行うこと)を実装と同じ多かれ少なかれである、行うことができます。
いいえ、でもこれを行うことができます:List
List
は、ArrayList
が使用するインターフェイスを定義しているため、Listを実装する他のすべてのクラスを一緒にまたは同様の方法で使用できるようにするメソッドを実装できます。 ArrayList
も常にList
ですが、List
は必ずしもArrayList
である必要はありません。
つまり、ArrayList
はList
(他のいくつかのインターフェイスの中で)を実装しています。
リストはインターフェイスです。 ArrayListは、Listインタフェースを実装するクラスです。
インターフェイスは、必要なメソッドシグネチャを定義しますが、実装方法については何も言いません。
インターフェイスを実装するクラスは、インターフェイスによって宣言された同一のシグネチャを持つメソッドのパブリック実装を提供することを約束します。
java docsによれば、Listは単なるインタフェースであり、ArrayListはそれを実装するクラスの1つです。 ArralyListをArrayListオブジェクトへのList型の参照の代わりに使用することには、固有の効率的な利点はありません。
しかし、「効率」について言えば、Listインターフェイスのさまざまな実装に違いがある可能性があります。たとえば、LinkedListとArrayListの間の効率の差は、使用方法によって異なります。
、
をArrayListページ上のJavaドキュメントを引用すると追加操作は、一定の償却時間で、つまり、n個の要素を追加すると、O(n)の時間を必要と実行されます。他のすべての操作は、線形時間(大まかに言えば)で実行されます。 Constant FactorはLinkedList実装の場合と比較して低くなります。
つまり、パフォーマンスの差はごくわずかですが、(LinkedListではなく)ArrayListを使用すると、いくつかの利点があります。
あなたが興味をお持ちの場合、ArrayListは、時折リサイズされる配列で実装されています(おそらくコレクションが2倍になるたびに)。これはLinkedListの実装とはかなり異なります。詳細については、wikipediaを参照してください。 )。
彼はそうではありません。彼はいつListを使うべきか、ArrayListを使うべきかを尋ねています。これまでのすべての回答が示していたように、LinkedListには入っていません。 LinkedListは、この特定の質問に対する誤った指示です。 – RichieHH
次のような行を考えてみましょう:
List<String> names = new ArrayList<String>();
あなたはオブジェクト指向するアーキテクチャを新たにしている場合は、あなたがArrayList<String> names = new ArrayList<String>();
のようなものを見るために代わりに期待しているかもしれません。結局のところ、新しいArrayList
だから、ArrayList
という変数に格納しないでください。
さて、あなたは確かにそれを行うことができます。しかし、List
は、ArrayList
が継承していると言われるソートのテンプレートのようなインターフェイスです。 「List
の実装を使用する場合はいつでも、これらのメソッドを使用できると期待できます」という契約です。 List
の場合は、方法等、add
、get
のようなものです
しかしArrayList
はList
の唯一の実装です。 LinkedList
のようなものもあります。 2つは同じインターフェイスを持ち、同じ方法で使用できますが、背後では非常に異なる動作をします。 ArrayList
は「ランダム」アクセスです。つまり、配列全体を繰り返し処理することなく、配列の特定の要素を直接見つけることができます。LinkedList
は最初の要素から開始し、必要な要素に到達するまで1つずつ進む必要があります。
オブジェクトを作成するときに指定する必要があるのは、通常、それがList
であるという事実だけを伝える必要があります。 List
は、あなたが指定した順番になるよう意図されたコレクションを持っていることを伝えます。それほど通信する必要がない場合は、別のインターフェイス(List
のスーパーインターフェイス)であるCollection
として渡すことを検討することもできます。または、通信する必要がある場合は、それを反復処理できるということであれば、Iterable
と呼ぶことさえできます。
リストとArrayList
、またはリストの他の実装の使い方は、Polymorphism
とInheritance
です。また、Javaなどの言語を使用する理由もあります。
多形は、継承が再利用されている間、多くの形式です。
ArrayList、Vector
、LinkedList
、Stack
など、利用可能なリストが多数あります。あなたからの使用を決定し、List APIを見ると、これらのList実装はすべてListのいずれかの方法で拡張されています。
- 1. ListとArrayListの違いは何ですか?
- 2. 多態性: "ArrayList list = new ArrayList"の代わりに "List list = new ArrayList"を使用するのはなぜですか?
- 3. list [-1:] [0]とlist [len(list)-1]の違いは何ですか?
- 4. JavaのListまたはArrayListの宣言の違いは何ですか?
- 5. List [String〜Int]とは何ですか?
- 6. List $ SerializationProxyとScala 2.11のListの違いは何ですか?
- 7. ArrayList <?>、ArrayList、ArrayList <Object>の違いは何ですか?
- 8. List <T>とList(Of T)との違いは何ですか?
- 9. ListまたはArrayListを返すべきですか?
- 10. pythonでmap(func、list)と[func(x)in listのxの違いは何ですか]
- 11. なぜArrayList <ArrayList <Integer>>と書くのですか?list = new ArrayList <>();
- 12. ArrayList al = new ArrayList()の違いは何ですか? and ArrayList al = new ArrayList(0)?
- 13. List [:] = Listはこの基数ソートコードで何をしますか?
- 14. arraylist/list RESTful Webサービスjson
- 15. シャッフル多次元List、ArrayList、LinkedList
- 16. PHPのlist()と同じことは何ですか?
- 17. ArrayList add()メソッドのエラーは何ですか?
- 18. Amazon S3:PUT/COPY/POST/LISTリクエストとは何ですか?
- 19. pythonのftp.dir()とftp.retrlines( 'LIST')の違いは何ですか?
- 20. linked-listのnode、node.next、node.next.nextとは何ですか?
- 21. phpの 'list'変数型とは何ですか?
- 22. IEnumerableとArray、IList、Listの違いは何ですか?
- 23. python 3のiterableとlistの違いは何ですか?
- 24. "git whatchanged - filename"と "git rev-list-filename"の違いは何ですか?
- 25. py3.xのlist()と[]の実装の違いは何ですか?
- 26. Python Listとは何ですか?このネストループの理解?
- 27. 二重リストコピーコンストラクタ:Singly Listコピーコンストラクタとの違いは何ですか?
- 28. PageList、ValueListとCode-Pega-Listの違いは何ですか?
- 29. なぜ、ArrayListに "implements List"があるのですか?
- 30. C#のArrayListとHashtableの違いは何ですか?
gosh、*これはこれまでに聞いたことがありません! OPに質問する前に、まずフォーラムを検索することを検討してください。 –
@Hovercraft、以前は聞かれたことはありませんか? – Atreys
再オープンする投票 - リンクされた投稿が重複しているとは思わない。これはインタフェースと実装のコーディングについてですが、これは実際に 'List'と' ArrayList'の違いを尋ねています。 –