HashSetのコレクションは、データ構造は、ハッシュテーブルです。非同期スレッド。原理要素は一意性を確保するため、同じ要素ハッシュコード値かどうかを決定することです。
同じ場合は、この方法は、それが真実であるかどうか、要素を決定していきます等しいです。
TreeSetの()コンストラクタの概要:
TreeSetのは():新しい空のセット、要素の自然順序付けに従ってソートセットを作成します。「最初の」(あるの同等のcompareToメソッド)
TreeSetの(コンパレータ):新しい空のTreeSetのを構築し、それがコンパレータに従ってソートされます。「第二」
TreeSetのは、その定義に保存されている要素のうち設定し、我々は比較を定義する必要があります。学生ケーススタディへ-----のgetName --- getAge
ウェイ:その後、方法、必要な定義の比較関数を、それをカバーするcomepareTo ----学生がComparableを実現しましょう。 (一次)
輸入 java.utilの。* ; パブリック クラスPractice_1 { 公共 静的 ボイドメイン(文字列[]引数){ TreeSetの <学生> TS = 新しい TreeSetの<学生> (); ts.add(新学生( "java001"、10 )); ts.add(新学生( "java004"、40 )); ts.add(新学生( "java003"、30 )); ts.add(新学生( "java002"、20 )); ts.add(新学生( "java008"、20 )); <学生>それ= ts.iteratorを(); 一方、(it.hasNext()) { 学生STU = it.next()。 SOP(stu.getName() + "..." + stu.getAge())。 } } パブリック 静的 ボイドSOP(オブジェクトobj) { のSystem.out.println(OBJ)。 } } クラスの学生は、実装匹敵 { プライベート文字列名を、 プライベート int型の年齢; 学生(文字列名、int型の年齢) { この .nameの=名; この .age = 年齢; } パブリック文字列のgetName() { 戻り名。 } 公共 INT getAge() { 戻り年齢; } 公共 のint のcompareTo(オブジェクトobj) { 場合((OBJ!instanceofは学生)) { スロー 新しいのRuntimeException( "不是学生对象"を)。 } 学生S = (学生)OBJ。 もし(この .age> s.age) { リターン 1 ; } 場合(この .age == s.age) { 戻り 、この.name.compareTo(s.name)を、 } 戻り -1 。 } }
要素自体は比較していない、またはしない場合、あなたはそれが比較の独自のセットを持ってできるようにする必要がある場合、比較する必要があります。 (二次)
コレクションの初期化時には、比較モードがあります。コンパレータの定義、TreeSetのコレクションコンストラクタの引数としてコンパレータオブジェクト。
次のように着信TreeSetのコンパレータ()コンストラクタを比較することができます。
クラス MyCompareは実装コンパレータ { 公共 のint 比較(オブジェクトO1、オブジェクトO2) { 学生S1 = (学生)O1と、 学生S2 = (学生)O2; INT NUM = s1.getName()のcompareTo(s2.getName())。 もし(NUM == 0 ) { 戻り 新しい整数(s1.getAge())のcompareTo(新しい整数(s2.getAgeを()))。 } 戻りNUM。 } }