2012-05-03 20 views
5

Javaでは、リストとマップがコレクションで使用されています。しかし、どのような状況でListを使うべきか、Mapを使うべきかを理解できませんでした。両方の主な違いは何ですか?リストと地図との違いは?

+0

Wayスケートの解答を得る! – chiliNUT

答えて

11

は今Java collections tutorialを読むのに良い時期でしょう - しかし、基本的に、リストには、インデックスによってアクセスできる要素の順序付けられたシーケンスで、マップがキーから値へ通常順不同マッピングです。

通常、キー/値マッピングが必要な場合や要素のコレクションが必要な場合は、かなり明白です(挿入の順序は保持されます)。キーがの部分の値がの場合、あまり明確でなくなりますが、そのキーで項目を効率的に取得したい場合は、 には、の中に別のキーのコレクションがないと感じていますが、これはまだマップの良いユースケースです。

の別名要素の(通常は順序付けられていない)コレクションでもあるSetもあります。

4

Mapは、Key:Valueのペアのデータです。たとえば、生徒のロール番号を名前にマッピングする場合は、

Listは、重複を許す単純な順序付けされた要素のコレクションです。たとえば、学生名のリストを表すために 。

0

Listは、単なる順序集合(シーケンス)です。これをチェックしてくださいlist documentation。整数インデックス(リスト内の位置)で要素にアクセスし、リスト内の要素を検索できます。 リストは、重複する要素と複数のNULL要素を許可します。

Mapは、値をキーにマップするオブジェクトです。これをチェックしてくださいmap documentation。マップに重複キーを含めることはできません。各キーは最大でも1つの値にマップできます。

1

マップインターフェイス マップは一意の識別子を気にします。一意のキー(ID)を特定の 値にマッピングします。ここでは、キーと値の両方がもちろんオブジェクトです。 マップの実装では、キーに基づいて の値を検索する、値のコレクションを要求する、またはキーのコレクション を求めるなどの操作を行うことができます。セットと同様に、マップはequals()メソッドを使用して、 の2つのキーが同じかどうかを判断します。

リストインターフェイス リストはインデックスを気にします。非リストには がないというListには、そのインデックスに関連する一連のメソッドがあります。これらの重要なメソッドには、 get(int index)、indexOf(Object o)、add(int index、Object obj)などのようなものがあります。 がオンです。 3つのリストの実装はすべて、インデックス位置、つまり のオブジェクトを特定のインデックスに設定するか、または位置を指定する を付けずにオブジェクトを追加することによって決定されます。この場合、オブジェクトは末尾に追加されます。

1

リストはリンクされたリストで、すべてのオブジェクトがポインタを介して次のオブジェクトに接続されます。新しいオブジェクトをリストに挿入するのにかかる時間はO(1)ですが、残りの操作はそれより長くなります。

良いことは、あなたが必要とするメモリ量とそれ以上のバイトでさえも正確に取ることです。

マップは配列を持つデータ構造であり、配列の各エントリは、キーに従って位置を計算するhashFunction(key)で計算されます。マップ内のほぼすべての演算は、(2つの同一のキーがある場合に挿入することを除いて)O(1)であるが、空間の複雑さはかなり大きい。より多くの読書のための

は、ウィキペディアのHashMaplinked list

+0

HashMapとLinkedListはMapおよびListインターフェイスの実装であり、それらのコレクションの特定のケースに過ぎません。 –

+0

@GuillaumePolet、あなたは正しいですが、アイデアは重要なものです。ハッシュマップとリンクされたリストの違いを理解することは、MAPとLISTの違いを理解する上での基礎となります – thepoosh

1

HashListをハッシュテーブルにオブジェクトを格納するデータ構造であり、list.itは、ハッシュマップと二重にリンクされたリストの組み合わせですしてみてください。 acessはより速くなります。 HashMapはマップインターフェイスのハッシュテーブル実装であり、HashTableと同じですが、非同期でnull値を許可します。リストは順序付けされたコレクションであり、ヌルと重複を許します。位置合わせが可能である。 Setは重複を許可しないコレクションであり、最大で1つのヌル要素を許可することがあります。私たちの数学的な集合と同じです。

0
List - This datastructure is used to contain list of elements. 
     In case you need list of elements and the list may contain duplicate values, 
     then you have to use List. 

Map - It contains data as key value pair. When you have to store data 
     in key value pair,so that latter you can retrieve data using the key, 
     you have to use Map data structure. 

List実装 - のArrayList、LinkedListの
Map実装 - のHashMap、TreeMapの

比較HashMapArrayListへ - ハッシュマップ すべて取得したい場合は最速のデータ構造であり、ページのノード。リストは時間がO(n)(n =ページ数、ソートされたリストの方が速いが、O(1)に近づくことはない)の間、一定の時間(O(1))でノードのリストを取り出すことができる。