ホームページ Java &#&面接の質問 Java コレクションのインタビューの質問の違い

Java コレクションのインタビューの質問の違い

Nov 29, 2019 pm 03:49 PM
java

Java コレクションのインタビューの質問の違い

HashMap と Hashtable の違いは何ですか?

HashMap と Hashtable は両方とも Map インターフェイスを実装しているため、多くの機能は非常に似ています。ただし、次のような違いがあります。HashMap ではキーと値を null にすることができますが、Hashtable ではキーや値を null にすることができません。 (推奨される学習: Java インタビューの質問 )

Hashtable は同期ですが、HashMap は同期しません。したがって、HashMap はシングルスレッド環境に適しており、Hashtable はマルチスレッド環境に適しています。

HashMap は、アプリケーションによって反復できるキーのコレクションを提供するため、HashMap はフェイルファストです。一方、Hashtable はキーの列挙を提供します。

一般に、Hashtable はレガシー クラスであると考えられています。

配列 (Array) とリスト (ArrayList) の違いは何ですか? ArrayList の代わりに Array を使用する必要があるのはどのような場合ですか?

Array と ArrayList の違いを以下に示します。

Array には基本タイプとオブジェクト タイプを含めることができますが、ArrayList にはオブジェクト タイプのみを含めることができます。

Array のサイズは固定されており、ArrayList のサイズは動的に変化します。

ArrayList は、addAll()、removeAll()、iterator() などのメソッドと機能をさらに提供します。基本的な種類のデータの場合、コレクションはオートボックス化を使用してコーディングの労力を軽減します。ただし、固定サイズのプリミティブ データ型を扱う場合、このアプローチは比較的遅くなります。

ArrayList と LinkedList の違いは何ですか?

ArrayList と LinkedList はどちらも List インターフェイスを実装していますが、次のような違いがあります:

ArrayList はインデックスベースのデータ インターフェイスであり、その最下層は配列です。 O(1) の時間計算量で要素へのランダム アクセスを実行できます。同様に、LinkedList はデータを要素のリストの形式で保存します。各要素は前後の要素にリンクされます。この場合、要素を見つける時間計算量は O( n) です。

ArrayList と比較して、LinkedList の挿入、追加、削除操作は高速です。これは、要素がコレクション内の任意の位置に追加されるときに、配列のようにサイズを再計算したりインデックスを更新したりする必要がないためです。

LinkedList は、各ノードに対して 2 つの参照 (前の要素を指し、もう 1 つは次の要素を指す) を格納するため、ArrayList より多くのメモリを消費します。

ArrayList と LinkedList を参照することもできます。

Comparable インターフェイスと Comparator インターフェイスは何をしますか?それらの違いを列挙してください。

Java は、compareTo() メソッドを 1 つだけ含む Comparable インターフェイスを提供します。このメソッドは 2 つのオブジェクトを並べ替えることができます。具体的には、入力オブジェクトが既存のオブジェクトより小さい、等しい、または大きいことを示す負の数、0、および正の数を返します。

Java は、compare() と equals() という 2 つのメソッドを含む Comparator インターフェイスを提供します。 Compare() メソッドは 2 つの入力パラメータを並べ替えるために使用され、負の数 0 を返します。正の数は、最初のパラメータが 2 番目のパラメータより小さい、等しい、または大きいことを示します。

equals() メソッドには、入力パラメーターがコンパレーターと等しいかどうかを判断するために使用されるパラメーターとしてオブジェクトが必要です。このメソッドは、入力パラメータがコンパレータでもあり、入力パラメータと現在のコンパレータの並べ替え結果が同じである場合にのみ true を返します。

HashSet と TreeSet の違いは何ですか?

HashSet はハッシュ テーブルによって実装されるため、その要素には順序がありません。 add()、remove()、contains() メソッドの時間計算量は O(1) です。

一方、TreeSet はツリー構造で実装されており、その中の要素は順序付けされています。したがって、add()、remove()、contains() メソッドの時間計算量は O(logn) です。

HashMap と ConcurrentHashMap の違いは何ですか?

ConcurrentHashMap は、HashMap のスレッドセーフな実装です。主な違いは次のとおりです:

ConcurrentHashMap はバケット配列全体をセグメントに分割し、ロック ロックを使用して各セグメントを保護します。Hashtable の syn キーワード ロックと比較して粒度が細かく、一部、同時実行パフォーマンスが向上します。より良い。 HashMap にはロック機構がなく、スレッドセーフではありません。

HashMap のキーと値のペアでは null が許可されますが、ConCurrentHashMap では null が許可されません。

JDK8 以降、ConcurrentHashMap では CAS アルゴリズムを使用した新しい実装方法が可能になりました。

List、Set、Map は Collection インターフェイスから継承しますか?

List と Set はそうですが、Map はそうではありません。 Map は Key-Value ペアのマッピング コンテナであり、List や Set とは明らかに異なります。Set は分散した要素を格納し、要素の重複は許可されません (数学のセットにも同じことが当てはまります)。List は線形構造を持つコンテナであり、数値に適しており、要素へのインデックスアクセス。

ArrayList、Vector、LinkedList のストレージのパフォーマンスと特徴を教えてください。

ArrayList と Vector はどちらも配列を使用してデータを保存します。配列要素の数は、要素を追加および挿入できるように、実際に保存されるデータよりも大きくなります。どちらも要素にシリアル番号で直接インデックスを付けることができますが、要素の挿入には次の操作が必要です配列要素の移動などのメモリ操作のため、データのインデックス付けは高速ですが、データの挿入は低速です。Vector は同期メソッド (スレッド セーフ) を使用するため、通常、そのパフォーマンスは ArrayList よりも劣ります。

LinkedList は、二重リンク リストを使用してストレージを実装します (追加の参照を通じてメモリ内に散在するメモリ ユニットを関連付け、シリアル番号でインデックスを付けることができる線形構造を形成します。このチェーン ストレージ方法は、連続ストレージ方法と一致します。配列の (実際にはメモリ使用率が高くなります) と比較すると、シリアル番号によるデータのインデックス付けは前方または後方の走査が必要ですが、データを挿入するときは、この項目の前後の項目を記録するだけでよいため、挿入は速度が速くなります。

Vector はレガシー コンテナです (Hashtable、Dictionary、BitSet、Stack、Properties に加えて、初期の JDK で使用されていたコンテナもすべてレガシー コンテナです)。使用は推奨されなくなりましたが、ArrayList と LinkedListedスレッドセーフではありません。複数のスレッドが同じコンテナーを操作する必要がある場合は、使用する前に、ツール クラス Collections の synchronizedList メソッドを使用してコンテナーをスレッドセーフなコンテナーに変換できます (これは、実際には装飾の最良の例です)モードでは、オブジェクトが別のクラスのコンストラクターに渡されて、新しいオブジェクトが作成され、新しい機能が追加されます)。

要素を保存するときの 3 つのインターフェイス List、Map、Set のそれぞれの特徴は何ですか?

List は順序付けされたコレクションです。このインターフェイスを使用すると、各要素の挿入位置を正確に制御できます。ユーザーは、Java の配列と同様に、インデックス (配列の添え字に似たリスト内の要素の位置) を使用してリスト内の要素にアクセスできます。

Set は、重複する要素を含まないコレクションです。つまり、任意の 2 つの要素 e1 と e2 には e1.equals(e2)=false があり、Set には最大 1 つの null 要素があります。

Map インターフェイス: Map は Collection インターフェイスを継承しないことに注意してください。Map はキーと値のマッピングを提供します

以上がJava コレクションのインタビューの質問の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能 PHP対Python:コア機能と機能 Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

See all articles