リスト
反復インタフェース整然とした貯蔵方法は2つの実装は、リストクラスを連結し(追加として使用ArrayListを有している)list.iterratorイテレータを通じてイテレータトラバーサルを得
違いは、配列とリンクリストの間の差であります
簡単なクエリの列の追加、およびハード削除、
簡単にリストへの追加や削除、クエリがトラバースする必要があります。
セット
非反復無秩序ストレージは、さらに追加する反復処理するイテレータとlist.iterratorを得るための一般的な方法であります
ハッシュマップのためのHashSetの底我々は同じ値かどうかを判断する際equalsメソッドとhashCodeをオーバーライドする必要があります
TreeSetのは、繰り返し、自然の秩序やカスタムオーダー(同様の仲介モデル)を決定しました
それが繰り返されるのであれば、それは0、1または-1であれば同等の自然順序付けインターフェースCOMPARATOの戻り値を達成するために繰り返すことはできません
パッケージcn.jiedada.TreeSet; インポートはjava.util.Comparator; インポートjava.util.TreeSet、 パブリック クラス{テスト / * 実装クラスが設定されている *またとない蓄積障害 *トラバーサル法 *またとない達成 *自然順序付けをcompareTo同等のソートと、このインターフェイスをカスタマイズ するカスタムソート* * * / パブリック 静的な 無効メイン(文字列[] args)を{ // TODO自動生成されたスタブ方法、 TreeSetのTreeSetの= 新しい新TreeSetの(); 教師teacher1 = 新しい新しい先生(「李」 、42である); 教師teacher2= 新しい教師( "李老师"、42 ); // 在添加的时候只能添加同一类的实列 / * スレッドの例外"メイン"とjava.lang.ClassCastException: cn.jiedada.TreeSet.Teacherがjava.lang.Comparableとにキャストすることはできません* / treeSet.add( teacher1); treeSet.add(teacher2)。 / * スレッドの例外"メイン"とjava.lang.ClassCastException: * cn.jiedada.TreeSet.Teacherがjava.lang.Integerのにキャストすることはできません* / // treeSet.add(1); System.out.println(TreeSetの)。 / * TreeSetの(コンパレータ<?スーパーE>コンパレータ)* / } } クラスの先生実装匹敵{ 文字列名を、 整数の年齢; 公共先生(文字列名、整数歳){ スーパー(); この .nameの= 名前; この .age = 年齢; } @Override 公共 のint のcompareTo(オブジェクトo){ // TODO自動生成方法スタブ 戻り 0 ; } @Override パブリック文字列のtoString(){ リターン "先生[NAME =" +名+ "年齢=" +年齢+ "]" 。 } }
compartorのカスタムオーダー我々は繰り返すかどうかを判断するために、当社独自のルールのためのインタフェースを指定することができます
パッケージcn.jiedada.TreeSet; 輸入はjava.util.Comparator。 輸入java.util.TreeSet。 パブリック クラスTest1を{ 公共 静的 ボイドメイン(文字列[]引数){ // TODO自動生成方法スタブ TreeSetのTreeSetの= 新しい TreeSetの(新しいコンパレータ(){ @Override 公共 のint 比較(オブジェクトO1、オブジェクトO2){ 学生STUDENT1 = (学生)01; 学生student2 = (学生)O2; リターンstudent1.age.compareTo(student2.age)。 } })。 学生の学生 = 新学生( "李鹏"、18 ); 学生student2 = 新しい学生( "小张"、18 ); treeSet.add(学生)。 treeSet.add(student2)。 System.out.println(TreeSetの)。 } } クラスの学生{ 文字列名。 整数の年齢; 公共学生(文字列名、整数歳){ スーパー(); この .nameの= 名前; この .age = 年齢; } }