目次
であることを許可しません。 hashCode 値は、hashCode 値に基づいて HashSet 内のオブジェクトの格納場所を決定します。 HashSet では、equals() メソッドと hashCode() メソッドの戻り値を比較することで、2 つのオブジェクトが等しいかどうかを判断します。
ホームページ Java &#&チュートリアル Java コレクション フレームワークの学習メモ

Java コレクション フレームワークの学習メモ

Apr 04, 2017 am 10:36 AM

Java コレクション クラスは、さまざまな数の複数のオブジェクトを格納するために使用でき、スタックやキューなどの一般的なデータ構造を実装できます。配列とは異なり、配列の長さは不変です。配列要素は基本型とオブジェクト型を格納できますが、コレクションはオブジェクト (本質的にはオブジェクトの 参照変数) のみを格納できます。 List、および Map。ここで、Set は順序付けされていない反復不可能なセットを表し、List は順序付けされた反復可能なセットを表し、Map はマッピング関係を持つコレクションを表します。マップ内の key は一意であり、値は次のとおりです。再現可能。このうち、Java5 以降に新たに追加された Set、List、および Queue キューは、Collection から派生したサブインターフェイスです。Set コレクションには、コレクション内のオブジェクト間に明確な順序がありません。 LinkedHashSet、TreeSet、はい SetHashSet のメイン実装クラスは、HashSet コレクション要素が

null

であることを許可しません。 hashCode 値は、hashCode 値に基づいて HashSet 内のオブジェクトの格納場所を決定します。 HashSet では、equals() メソッドと hashCode() メソッドの戻り値を比較することで、2 つのオブジェクトが等しいかどうかを判断します。

LinkedHashSet は HashSet のサブクラスですが、順序を維持するためにリンクされたリストも使用します。要素の挿入順序を維持する必要があるため、HashSet よりもパフォーマンスが若干低くなります。同じ要素を並べることはできません。同様に、TreeSet はコレクション要素がソートされた状態であることを確認して、サイズを比較するためにコレクション要素の comparTo (Object obj) メソッドを呼び出します。要素間の関係を確認し、コレクション要素を昇順に並べ替えます。つまり、自然な並べ替えです。 TreeSet は、Comparator インターフェイスを介してカスタマイズされた並べ替えを実装することもできます。TreeSet コレクション オブジェクトを作成する場合、TreeSet コレクションに関連付けられる Comparator オブジェクトが提供され、Comparator オブジェクトはコレクション要素の並べ替えロジックを担当します。

さまざまな Set パフォーマンスの比較

TreeSet はセット要素の順序を維持するために追加のアルゴリズムを必要とするため、HashSet のパフォーマンスは常に TreeSet より優れています。TreeSet は、ソートされたセットを維持する必要がある場合にのみ使用する必要があります。それ以外の場合は、HashSet を使用する必要があります。利用される。さらに、LinkedHashSet は HashSet のサブクラスであり、通常の挿入および削除操作に対応します。ただし、LinkedHashSet のパフォーマンスは、リンク リストの維持によって発生するオーバーヘッドのためです。 、LinkedHashSet をトラバースするときは高速になります。ただし、set の 3 つの実装クラスはどれもスレッドセーフではありません。通常は、Collections ツール クラスの synchr
onizedSortedSet メソッドを使用して、set コレクションをラップすることができます。たとえば、次のようにします。 code>SortedSet s = Collections.synchronizedSortedSet(new

TreeSet(...));

List コレクションは、順序付けされた反復可能なコレクションを表します。コレクション内の要素には、対応する index

ArrayList と Vector の 2 つの典型的な実装があり、LinkedList

The ArrayList もあります。 Vector クラスは、再割り当てを可能にする動的 Object[] 配列をカプセル化します。追加された要素の数が配列の長さを超えると、初期の長さは自動的に増加します。 ArrayList と Vector の大きな違いは、ArrayList はスレッド セーフではないのに対し、Vector はスレッド セーフであり、コレクションの同期を確保するためのプログラムを必要としないことです。 Vector はスレッドセーフであるため、Vector カラーのパフォーマンスは ArrayList よりも低くなります。スレッド セーフを確保する必要がある場合でも、一般に Vector を使用することは推奨されません。代わりに、Collections ツール クラスの関連メソッドを使用して、ArrayList をスレッド セーフ クラスにラップします。
Vector には、スタックのデータ構造をシミュレートするために使用される Stack というサブクラスもあります。継承 の関係により、Stack はスレッドセーフであるため、パフォーマンスは比較的低くなります。スタックのデータ構造に使用する必要がある場合は、LinkedList を使用することを検討してください。これは、リンクされたリストに基づいたリストです。特に、要素の挿入と削除は非常に高速です。 LinkedList List インターフェイスと Deque インターフェイスの両方が実装されているため、スタックとして使用できます。 Queue コレクションは、先入れ後出しのキューのデータ構造をシミュレートするために使用されます。 Deque は、両端のキューを表す Queue のサブインターフェイスであり、キューの要素を両端から操作できるようにします。

LinkedList と ArrayList の違い
ArrayList はコレクション内の要素を配列の形式で内部的に格納するため、コレクション要素にランダムにアクセスする際のパフォーマンスが向上しますが、LinkedList はコレクションの要素を次の形式で格納します。リンクされたリストなので、ランダムアクセスのパフォーマンスは劣りますが、要素の挿入と削除のパフォーマンスは優れています。

Map は、マッピング関係を持つデータを保存するために使用されます。キーと値はどちらも任意の参照型データにすることができますが、マップのキー値は一意であり、

HashMap と Hashtable は Map の 2 つの実装クラスです。
Hashtable はスレッドセーフな Map 実装クラスですが、HashMap はスレッドセーフではないため、HashMap のパフォーマンスがわずかに優れています。

さらに、Hashtable では null をキーと値として使用することはできません。Hashtable に null を入力しようとすると、null ポインター例外が発生しますが、HashMap ではキーと値を繰り返すことができないため、HashMap には null のみを使用できます。 1 つのキーは null ですが、null の値が複数存在する可能性があります。
HashMap と Hashtable の 2 つのキーが等しいかどうかを判断する基準は、equals() メソッドと hashCode() メソッドによる 2 つのキーの戻り値が等しいことです。
LinkedHashMap は HashMap のサブクラスでもあり、LinkedHashMap はキーの順序を維持するために二重リンク リストを使用します。つまり、反復順序は挿入順序と一致します。要素の挿入順序を維持する必要があるため、全体的なパフォーマンスは HashMap よりもわずかに低くなります。

TreeMap
Map には SortedMap インターフェイスもあります。SortedMap インターフェイスは、TreeMap がキーと値のペアを保存するときに、キーに従ってノードを並べ替える必要があります。自然な並べ替えでは、キー Comparable インターフェイスを実装する必要があります。スケジュールされた並べ替えでは、TreeMap の作成時に Comparator オブジェクトを渡す必要があります。このオブジェクトは TreeMap 内のキーを並べ替えます。ツリーセットに似ています。 TreeMap は順序を維持する必要があるため、HashMap や Hashtable よりも遅くなります。

コレクションとコレクションの違い

コレクションはJavaのコレクション

フレームワークのインターフェースですコレクションはコレクションフレームワークのツールクラスであり、コレクション要素の並べ替え、
クエリ、変更などを行うための多数のメソッドを提供しますオペレーションでは、コレクション オブジェクトを不変に設定し、オブジェクト コレクションに同期制御を実装するためのメソッドも提供します。

以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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の完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

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つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

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

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

Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

See all articles