今セットやマップ、およびTreeSetのの役割の役割を見てください。
何も将来のために学習する必要があります。
それぞれ注文したコンテンツの解析に対応する時間の複雑さのために、それを再び見るために必要とされます。
何が最悪など、最高です。
書き込みデータ構造は適切なコードleetcodeを達成するので、ここでプライベート・インタフェースを書くために一部を書くいるプライベートクラスの部分は、あなたが学ばなければならない、学ぶ必要があります。
コンピュータネットワーク、オペレーティングシステム、およびその他の知識の前に学んだために、我々は既に学習を検討する必要があります。そして、インタビューに応じて行くためにコンテンツを追加します。
対応するコンテンツのセットとのマップ:
、独自の実装を書くことが適切な場合
セット<文字列>セット=新しいHashSetの<>();
セット<文字列>セット=新しいTreeSetの<>();
地図<文字列、学生>マップ=新しいHashMapの<>();
地図<文字列、整数>マップ=新しいのTreeMap <>();
ここで言ったのである:書き込みに自分の場合は、使用すべきか、あなたが使用する必要があります。HashSetのは----「セットのソートにする必要はありません
TreeSetの---セットのソートにする必要があります。ハッシュマップ---マップ、ツリーマップ---マップのソートに必要のない一種。
そして、言葉は知っている:私はセットを使用する必要があり時:繰り返しのない要素の内部に希望を、あなたがセットを使用する必要があります
私はマップを使用する必要がありますする場合:確立したいです:1つのマッピング、その後、マップを使用する場合。
その後、ペアとマップとの違いは、彼らがより軽量のペアを使用していることを知っているだろう。
key
インデックス方法算出それが呼び出すことでkey
、オブジェクトのhashCode()
返すメソッド、int
整数。HashMap
これは、直接法によって配置されているkey
に対応するvalue
インデックス、及び、直接戻さvalue
。
したがって、適切な使用は、Map
そのことを確認する必要があります:
-
以下のように
key
、オブジェクトが正しいオーバーライドしなければならないequals()
方法を、二つの同一のkey
インスタンスを呼び出してequals()
返さなければなりませんtrue
。 -
key
オブジェクトも右オーバーライドする必要がありますhashCode()
方法を、およびhashCode()
方法は、厳密には、以下の仕様を遵守しなければなりません。
- 2つのオブジェクトが等しい場合、2つのオブジェクトは
hashCode()
等しくなければなりません。 - 2つのオブジェクトが等しくない場合には、2つのオブジェクトが
hashCode()
一致しないと。
ここで言うです:、何が注目点がある場合に使用するPUTマップ:
要素を見つけるために任意の関数へのコンテナを使用している場合(検索し、含まれている)、その後、このクラスのオブジェクトは、等号の機能を実装する必要があります。
理由:彼らは等しく、コンテンツを定義する必要があります。基本的なデータ型の場合、文字列型は、引用、彼らはすでにこの部分の内側に書かれています。
-
key
オブジェクトも右オーバーライドする必要がありますhashCode()
方法を、およびhashCode()
方法は、厳密には、以下の仕様を遵守しなければなりません。
- 2つのオブジェクトが等しい場合、2つのオブジェクトは
hashCode()
等しくなければなりません。 - 2つのオブジェクトが等しくない場合には、2つのオブジェクトが
hashCode()
一致しないと。
ハッシュコード機能の効果:目的に応じて、彼らはハッシュコードを取得します。次に、リストの検索
私たちは、異なる置くkey
同じでhashCode()
ハッシュ衝突と呼ばれる状況。紛争の時には、最も簡単な解決策の一つは、List
保存するためにhashCode()
同じkey-value
。明らかに、より高い確率は、競合する場合はList
長く
ここで言われている:マップのニーズはマップがオブジェクトに基づいているため、ハッシュコードの機能をオーバーライドし、指定されたオブジェクトを探しに行く、ハッシュコード値を見つけることが理由。
それは次のとおりです。あなたが何かを見つける必要がある場合キーとしてなら、書き込み等号は、マップ場合は、これに加えて、我々はまだハッシュコード機能を無効にする必要があります。
だから彼らが叶う書き込みに行けば:
に設定された実現として、マップとしてLinkedListのはそう。
マップとしてBSTは、実現のセットとして、その後の事がソートされて内部で、キーはソート前にあるマップに設定します。(追加するために従っているバイナリ検索ツリーを追加するため)
BSTMap <KがComparableを拡張し、<K>、V>道具地図<K、V>
要素は最初の要素がクラスに行くに匹敵する必要性を拡張するように、内部の必要性を比較するために開催されている場合:ので、この文は、非常に良いです。
そして、それらの全体が、マップの実現として。
構造は、4つのファイルに分かれている場合には、
容器底部
覚えて、基礎となるコンテナ・インタフェースを実現する方法2. この位置は、容器の底部に保持された位置であり、上記第二図です。
3.インタフェース:書き込みのみ抽象機能
ここでは、インターフェイスを作成する方法を、自分自身のインターフェイスを作成する方法を教えることです。
以下は、二重のファイル構造であります:
実際には、主な機能は、ファイル構造への3に相当するものを書かれていません。
ノードは、プライベートクラスとして保存されています
直接に入れて対応する機能を与え、対応する機能がマージ直接来るLinkedListのです。
:にある内容の一部が変更された容器の下部には、ホールド。容器の底に直接書き込みが達成する方法で、容器の底部を持たないでください。
leetcodeコードなど:以下は、一般的に使用される単一の構成ファイルです。
しかし、またノート:leetcodeコード、通常はそれを達成するために直接利用できる書かれたが、そこに既存の実装があり、回線のコールに直接アクセスしてください。
1.インターフェイスは、プライベートで開催されるが判明します
2.インタフェースの適切な実装は、プライベートクラスの所有者となっています。
もちろん3.このインタフェースのスタッフ内部の実装への統合へのコンテナのボトム、。
ここではそれは、単一のファイル構造の練習です
このセクションでは、この上にハングアップして、分析し、次に行うために、適切な後に行くことを続けます。