リスト Javaでは、のサブインターフェースです。 これにより、位置アクセス、反復などの概念を備えた最適なソリューションが提供されます。この記事では、JavaのリストインターフェイスLinkedListとArrayListの主な違いについて説明します。
この記事で取り上げるトピックは次のとおりです。
LinkedListとは何ですか?
後 配列 、2番目に人気のあるデータ構造は間違いなく 。リンクリストは、次の要素で構成される線形データ構造です。各ノードに値とが含まれるノードのチェーンポインターチェーン内の次のノードに移動します。また、tリンクリストの最後のリンクはnullを指し、チェーンの終わりを示します。リンクリストの要素は、 ノード 。リストの最初のノードは、 頭 。最後のノードはと呼ばれます 尾 。
これの簡単な例を挙げましょう:一緒にリンクされているペーパークリップのチェーンを想像してみてください。上部または下部に別のペーパークリップを簡単に追加できます。真ん中に挿入するのも簡単です。あなたがしなければならないのは、真ん中でチェーンを壊し、新しいペーパークリップを追加し、そして残りの半分を再接続することです。リンクリストはこれに似ています。
例:
package MyPackage import java.util.LinkedList import java.util.ListIterator public classlinkedlist {public static void main(String args []){/ *リンクリスト宣言* / LinkedListl_list = new LinkedList()/ * add(String Item)isリンクリストにアイテムを追加するために使用されます* / l_list.add( 'Java')l_list.add( 'Python')l_list.add( 'Scala')l_list.add( 'Swift')System.out.println( 'リンクリストコンテンツ:' + l_list)/ *指定された位置にアイテムを追加* / l_list.add(2、 'JavaScript')l_list.add(3、 'Kotlin')System.out.println( 'l_list編集後のコンテンツ: '+ l_list)/ *最初と最後のアイテムを追加* / l_list.addFirst(' First Course ')l_list.addLast(' Last Course ')System.out.println(' l_list Content after add: '+ l_list)/ * Getリスト内のアイテムを設定します* / Object firstvar = l_list.get(0)System.out.println( 'First Item:' + firstvar)l_list.set(0、 'Java9')System.out.println( 'l_list Content最初のアイテムを更新した後: '+ l_list)/ *位置から削除* / l_list.remove(1)l_list.remove(2)System.out.println ( '2番目と3番目の位置のアイテムを削除した後のLinkedList' + l_list)/ *最初と最後のアイテムを削除* / l_list.removeFirst()l_list.removeLast()System.out.println( '最初と最後のアイテムを削除した後の最終コンテンツ: '+ l_list)/ *リンクリストの反復* / ListIteratoritrator = l_list.listIterator()System.out.println('リストは反復子を使用して表示: ')while(itrator.hasNext()){System.out.println(itrator 。次()) } } }
出力:
リンクリストコンテンツ= {Java、Python、Scala、Swift}編集後のコンテンツ= {Java、Python、JavaScript、Kotlin、Scala、Swift}追加後のコンテンツ= {First Course、Java、Python、JavaScript、Kotlin、Scala、Swift、最後のコース}最初のアイテム= {最初のコース}最初のアイテムを更新した後のコンテンツ= {Java9、Java、Python、JavaScript、Kotlin、Scala、Swift、最後のコース} 2番目と3番目の位置のアイテムを削除した後のコンテンツ= {Java9、Python、 Kotlin、Scala、Swift、最後のコース}最初と最後のアイテムを削除した後の最終コンテンツ= {Python、Kotlin、Scala、Swift}イテレーターを使用して表示されるリスト= Python Kotlin Scala Swift
ArrayListとは何ですか?
は、対応するリストに要素を動的に追加または削除できるリストインターフェイスの実装です。ここで、要素が初期サイズまたは実際のサイズよりも多く追加されると、リストのサイズが動的に増加します。標準の配列よりも遅い場合がありますが、配列で多くの操作が必要なプログラムで役立つ場合があります。
ArrayListは、次の目的で使用されます。
- JavaのArrayListは お店 動的なサイズの要素のコレクション。
- サイズで初期化されます。ただし、コレクションが拡大するとサイズが大きくなり、オブジェクトがから削除されるとサイズが縮小する可能性があります。 。
- また、ArrayListを使用すると、リストにランダムにアクセスできます。
先に進み、JavaのLinkedListとArrayListの類似点を指摘しましょう。
ハッシュマップとハッシュテーブルの違い
LinkedListとArrayListの類似点
これらは、JavaのLinkedListとArrayListの注目すべき類似点です。
- ArrayListとLinkedListは、 リストインターフェース 。
- ArrayListとLinkedListはどちらも、要素の挿入順序を維持します。これは、リスト要素を表示している間、結果セットは要素がリストに挿入されたのと同じ順序になることを意味します。
- これらのArrayListクラスとLinkedListクラスは同期されておらず、を使用して明示的に同期させることができます。 CollectionsSynchronizedList 方法。
- これらのクラスによって返されるイテレータとListIteratorはフェイルファストです。これは、イテレータが作成された後の任意の時点でリストが構造的に変更された場合、イテレータ独自のremoveまたはaddメソッドの場合、イテレータは ConcurrentModificationException 。
LinkedListとArrayListの違い
まず、JavaでLinkedListとArrayListを比較するためのパラメーターを見てみましょう。
JavaでLinkedListとArrayListを比較するためのパラメーター:
- 操作
- 実装
- 処理する
- 記憶
- オペレーション
アイテムの挿入、追加、および削除操作は、 LinkedList のようにサイズを変更する必要がないためです 配列リスト。
2.2。 実装
配列リスト に基づいています 動的にサイズ変更可能な配列の概念 LinkedList 二重リンクリストの実装に基づいています
3.3。 処理する
に LinkedList クラスはListおよびDequeインターフェイスを実装しているのに対し、ArrayListはリストしか実装できないため、リストおよびキューとして使用できます。
四。 記憶
に LinkedList より多くのメモリを消費します 配列リスト のすべてのノードが LinkedList 2つの参照を格納しますが、 配列リスト データとそのインデックスのみを保持します
JavaでのLinkedListとArrayList
パラメーター | LinkedList | 配列リスト |
オペレーション | 挿入、追加、および削除の操作は非常に高速です | 比較的操作ここは遅い |
実装 | 二重リンクリストの実装に従います | 動的にサイズ変更可能な配列の概念に従います |
処理する | LinkedListクラスは、ListインターフェイスとDequeインターフェイスを実装しているため、リストとキューにすることができます。 | ArrayListクラスはリストのみを実装するため、リストにすることができます |
記憶 | LinkedListのメモリ消費量が多い | LinkedListと比較して少ない |
それはすべての人々です!これで、JavaのLinkedListとArrayListに関するこの記事は終わりです。この記事で教えられていることを皆さんが明確に理解していることを願っています。
「JavaでのLinkedListとArrayList」に関するこの記事を見つけた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。私たちはあなたの旅のすべてのステップであなたを助けるためにここにいます、そして私たちはJava開発者になりたい学生と専門家のために設計されたカリキュラムを考え出します。