Java インタビューにおける Arraylist と Linkedlist の違い

王林
リリース: 2020-12-24 10:12:14
転載
4719 人が閲覧しました

Java インタビューにおける Arraylist と Linkedlist の違い

まず Arraylist の知識を紹介しましょう:

(学習ビデオ共有: java 教育ビデオ )

Arraylist:最下層は動的配列に基づいており、次の表によると、配列要素へのランダム アクセスは非常に効率的であり、要素を配列の末尾に追加することは非常に効率的です;

ただし、データの削除は配列内にデータを追加したり、配列の途中にデータを追加したりすることは、配列を移動する必要があるため非効率的です。たとえば、最悪のシナリオは最初の配列要素を削除することですが、これには 2 番目から n 番目の配列要素をそれぞれ 1 ビットずつ進める必要があります。動的配列と呼ばれる理由は、配列要素が容量を超えた場合に Arraylist を拡張できるためです (JDK1.8 の場合、拡張後の配列の容量は拡張前の 1.5 倍になります)。ソース コードは Integer .MAX_VALUE-8 で、空いた 8 ビットについて、現在の説明は次のとおりです:

①ストレージ ヘッダーワード;

②一部のマシン メモリのオーバーフローを回避し、エラーの可能性を減らすため、割り当て;

③引き続きサポートできる最大値は Integer.MAX_VALUE です (Integer.MAX_VALUE-8 ではまだ需要を満たすことができない場合)。

以下は Arraylist のソース コードの一部です: Arraylist の拡張:

Java インタビューにおける Arraylist と Linkedlist の違い

(その他のインタビューの質問を共有します: java インタビューの質問と回答)

Add data to Arraylist: (配列の末尾に追加)

Java インタビューにおける Arraylist と Linkedlist の違い

#配列の指定された位置に配列を追加します:

Java インタビューにおける Arraylist と Linkedlist の違い

ArrayList の現在の容量が十分に大きい限り、配列の末尾への add() 操作は非常に効率的であることがわかります。データを配列の指定された位置に移動すると、多数の配列の移動およびコピー操作が実行されます。配列がコピーされると、最終的に System.arraycopy() メソッドが呼び出されるため、add() 操作の効率は依然として非常に高くなります。それでも、指定した場所にデータを追加する場合、ポインタを変更するだけでデータを追加する Linkedlist よりも遅いです。 Arraylist 内の配列を削除するには、配列を移動する必要があるため、時間がかかります。

Linkedlist はリンク リストに基づく動的配列です。データの追加と削除は効率的で、ポインタを変更するだけで済みます。ただし、データへのアクセスの平均効率は低く、リンク リストを横断する必要があります。配列リスト取得データ ソース コード: (添字アクセスによると、高効率)

Java インタビューにおける Arraylist と Linkedlist の違い

リンクリスト アクセス データ ソース コード: (node() 関数はリンク リストを横断します)

Java インタビューにおける Arraylist と Linkedlist の違い

Java インタビューにおける Arraylist と Linkedlist の違い

要約:

1. LinkedList はポインタを移動する必要があるため、ランダム アクセスの取得および設定の場合は、LinkedList よりも ArrayList の方が優れています。

新規操作および削除操作の追加および削除の場合、ArrayList はデータを移動する必要があるため、LinedList の方が有利です。

2. それぞれの効率の問題:

Java インタビューにおける Arraylist と Linkedlist の違い

関連する推奨事項: Java 入門チュートリアル

以上がJava インタビューにおける Arraylist と Linkedlist の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!