1。問題
1.ハッシュセット、ツリーセットはhashcode()およびequal()メソッドをどのように使用しますか
2。TreemapとTreesetのオブジェクトが同等のインターフェイスを実装するのはいつですか?
2。回答:
1。ハッシュセットはハッシュマップを介して実装され、treesetはtreemapを通じて実装されますが、セットはマップキーのみを使用します。
2。マップのキーとセットの両方に共通の機能があります。これはセットの独自性です。 Treemapには追加の注文があります。
3。HashCodeおよびEqual()がHashmapに使用されます。ソートする必要はないため、ポジショニングとユニークさに注意を払うだけです。
A.HashCodeはハッシュ値を計算するために使用され、ハッシュ値はハッシュテーブルインデックスを決定するために使用されます。
b。ハッシュテーブルのインデックスはリンクリストを保存するため、キー値に対応するエントリを真に見つける前に、チェーン上の各オブジェクトを比較するために等しい方法をループする必要があります。
C.putの場合、ハッシュテーブルが配置されていない場合は、リンクリストの前にエントリを追加します。配置されている場合は、エントリの値を交換し、古い値を返します。
d。キーのハッシュコード()と等しい()を上書きするときは、それらを可変特性に関連付けないように注意してください。それ以外の場合、プロパティが変更された後、ハッシュコードが変更され、等しい場合もあります。そのため、マップには見つかりません。さらに、そのようなオブジェクトは、それが見つからないためにリリースできません。これは無効な参照になります(メモリリークに相当)。
4. Treemapにはソートが必要なため、キー値のサイズを比較するにはコンパレータが必要です。もちろん、コンパレータを使用して配置されています。
A.コンパラーはTreemapを作成するときに指定し、並べ替え時にComparator.comPareを使用できます
b。 Comparatorが作成中に指定されていない場合、Key.comPareTo()メソッドが使用されます。これには、比較可能なインターフェイスを実装するためのキーが必要です。
C.TREEMAPはツリーデータ構造を使用して実装されるため、Compareインターフェイスを使用してポジショニングを完了できます。
java.util.hashset;インポートJava.util.iterator; public class wpsklhashset {// javaでのセットの使用(重複オブジェクトは許可されていません):public static void main(string [] args){hashset hashset = new Hashset(); String a = new String( "a"); string( "b"); hashset.add(a); hashset.add(b); system.out.println(hashset.size()); string cz = hashset.add(c)? 「このオブジェクトは存在しません」:「既に存在する」; system.out.println( "オブジェクトを追加できるかどうかをテスト"+cz); system.out.println(hashset.isempty()); while(ir.hasnext()){system.out.println(ir.next());} //オブジェクトがsystem.out.out.println(hashset.remove( "a")); out.out.println(hashset.remove( "a")); // ir = hashset.iterator(); (ir.hasnext()){system.out.println(ir.next());}}/***このプログラムを通じて、ツリーセットの追加要素の障害とjava.util.treeset; import java.util.itertor; public vioid agup [] {] treeset(); tree.add( "china"); tree.add( "America"); tree.add( "Japan"); tree.add( "chinens"); iterator iter = tree.iterator(); while(iter.hasnext()){system.out.println(iter.next());}}}}}}}また、私は他のいくつかの違いをオンにしています(「Baiduが知っている」Andygulinの友人に感謝します):
1。ツリーセットは、2差のツリーによって実装されています。ツリーセットのデータは自動的にソートされ、null値は許可されていません。
2。ハッシュセットはハッシュテーブルによって実装されます。ハッシュセットのデータは順序付けられていません。 nullを置くことはできますが、nullを1つしか入れることができません。データベースの一意の制約のように、両方の値を繰り返すことはできません。
3。ハッシュセットでは、配置されたオブジェクトがHashCode()メソッドを実装する必要があります。配置されたオブジェクトにはハッシュコードコードが付いており、同じコンテンツを持つハッシュコードオブジェクトには同じハッシュコードがあるため、配置されたコンテンツを繰り返すことはできません。ただし、同じクラスのオブジェクトは、異なる場合に配置できます。
要約します
上記は、ハッシュセットとツリーセットの使用方法の違いに関するこの記事のすべての内容であり、すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!