Javaのコレクションとリストの違いは何ですか?


153

違いは何であるCollectionListJavaでは?どちらを使用すればよいですか?


パブリックインターフェイスリストはコレクション{}を拡張します
rai.skumar

回答:


263

まず、a ListCollectionです。Collectionただし、これは特殊なものです。

A Collectionはそれだけです。アイテムのコレクションです。ものを追加したり、削除したり、イテレートしたり、そこにあるものの量を問い合わせたりできます。

Listあなたは位置の要素を取得することができます:それにものの定義された順序に関する情報を追加してn個あなたがた位置にある要素を追加することができ、nは、あなたが位置にある要素を削除することができ、N

ではCollection、あなたはそれを行うことはできません。「このコレクション内の5番目の要素は、」定義されていない、いない定義された順序があるため。

他にも特殊なコレクションがあります。たとえばSet、同じ要素が2回含まれないという機能が追加されます。


9
はい、リストはコレクションの順序付けされた特殊化です(ただし、ソートされていません)+1
アタマンロマン

2
Javaのリストはコレクションインターフェイスを拡張し、位置ベースの検索と削除の動作に役立つインデックス付き関数を構築します
フリクション

188

CollectionJavaコレクション階層へのルートインターフェースです。 Listは、順序付けられたコレクションを定義する1つのサブインターフェイスです。他のサブインターフェイスは Queue、通常、処理の準備ができている要素(例:stack)を格納します

次の図は、さまざまなJavaコレクションタイプ間の関係を示しています。

Javaコレクション


1
本当にあなたのイメージのように、SCJPの準備をしているときに見ましたが、最近はそれらのことをほとんど忘れてしまいます。
Truong Ha

1
この画像がこのブログから盗み出されたことを認めなければなりません。私もK&B SCJPの本でこのような図を最初に見ました。
krock

scjp証明書から多くのことを学ぶことができます。このトピックに関するほとんどの本は素晴らしいです:)
atamanroman

とは思わMapないCollection
giannis christofakis

7

Java APIはこれに答えるのに最適です

コレクション

コレクション階層のルートインターフェイス。コレクションは、その要素と呼ばれるオブジェクトのグループを表します。一部のコレクションは重複する要素を許可し、他は許可しません。一部は注文済みで、他は未注文です。JDKは、このインターフェースの直接の実装を提供していません。SetやListなどのより具体的なサブインターフェースの実装を提供しています。このインターフェイスは通常、コレクションを渡し、最大の一般性が望まれる場所でそれらを操作するために使用されます。

リスト(コレクションを拡張)

順序付けられたコレクション(シーケンスとも呼ばれます)。このインターフェイスのユーザーは、リスト内の各要素を挿入する場所を正確に制御できます。ユーザーは、整数インデックス(リスト内の位置)によって要素にアクセスし、リスト内の要素を検索できます。

セットとは異なり、リストは通常​​、重複する要素を許可します。より正式には、リストは通常​​、e1.equals(e2)のような要素e1とe2のペアを許可し、null要素を許可する場合は通常、複数のnull要素を許可します。ユーザーが重複を挿入しようとするとランタイム例外をスローして、重複を禁止するリストを実装したいと考える人も少なくありませんが、このような使用法はまれであると予想されます。


3

リストとセットはコレクションの2つのサブクラスです。

リストでは、データは特定の順序になっています。

セットでは、同じデータを2回含めることはできません。

コレクションでは、特定の順序なしでデータを格納するだけで、重複データを含めることができます。


2

コレクションは、他のオブジェクトのコレクションを含むことができるJavaオブジェクトを記述する高レベルのインターフェースです。それらがどのようにアクセスされるか、同じオブジェクトの複数のコピーが同じコレクション内に存在できるかどうか、または順序が重要であるかどうかはそれほど明確ではありません。 リストは具体的にはオブジェクトの順序付けられたコレクションです。オブジェクトを特定の順序でリストに入れると、それらはその順序のままになります。

また、これらの2つのインターフェースをどこで使用するかを決定することは、使用する具体的な実装を決定することよりもはるかに重要ではありません。これは、プログラムの時間と空間のパフォーマンスに影響を与えます。たとえば、リストが必要な場合は、ArrayListまたはLinkedListを使用できます。これらはそれぞれ、アプリケーションに影響を与えます。他のコレクションタイプ(セットなど)についても、同様の考慮事項が適用されます。


2

コレクションはリストのスーパーインターフェイスであるため、すべてのJavaリストはコレクションのインスタンスでもあります。コレクションは順番に(特定の順序ではなく)のみ反復可能ですが、Listではget(int index)メソッドを介して特定の位置にある要素にアクセスできます。


2

コレクションはJavaコレクション階層のメインインターフェイスであり、List(Sequence)は順序付けられたコレクションを定義するサブインターフェイスの1つです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.