java学習ノート(基礎編)—集合

3027 ワード

一、集合フレームの構成は、java.utilカバンの中にあります.
1)インターフェース:実現が必要な抽象的な方法を定義する.2)実装クラス:インターフェース内の方法をArayList、Hashtableなどの3)アルゴリズム:データを保存して操作するアルゴリズム.ハッシュ・アルゴリズムのような、マホガニー・ツリー・アルゴリズム・・・
Collection(    )
  -List(  )
    -ArrayList
    -Vector
    -LinkedList
  -Set(  )
    -HashSet
    -SortSet(  )
      -TreeSet
  -Map(  )
    -HashMap
    -TreeMap
    -Treetable
    ...
二、集合の階層構造
a):保存単値Collection:保存単値の仕様を定義するSet:重複無秩序単値を保存してはいけない仕様を定義する———HashSet:ハッシュアルゴリズムはデータを保存し、検索効率が最も高いのは――Sortedest:Setに基づいて並べ替えを行う仕様を定義する――TreeSet:並べ替え規則を実現する——List:重複して秩序化した単値を保存できる仕様を定義する——Listインターフェース——Vector:配列を使ってListインターフェース、スレッド安全を実現する——ArayList:配列を使ってListインターフェースを実現する.スレッドが安全ではない
b)キーの値を保存します.(key-value)Map:キーの値を定義して保存します.(keyは重複できません.valueは繰り返しできます.)HashMap:スレッドが安全ではありません.効率が高く、HashMapはnull keyとnull valueを許可します.——HashTable:スレッドの安全です.Hashtableはnull keyとnull keyを許可しません.——TreeMap:mapを並べ替える
c)Mapクラスの方法:HashMap,Hashtable put(Object key,Object value):mapセットにデータを追加するSet keySet():mapの中のすべてのkeyを取り出してセットにセットするObject get(Object key):mapセットからデータを取得します.Set entrySet():mapのkeyと対応するvalueを新たなオブジェクト(Map.Entry)としてセットにします.Map.Entry:getKey()Map.Entry:getValue()Set values():mapの中のすべてのvalueを取り出して、collectionの集合の中に置く.
interface Map{
    static interface Entry{
    }
}
三、拡張forサイクル
a)以前のforサイクルfor(初期化変数、循環条件、変数の制御){循環体}bは、拡張forサイクルを実行しています.集合および配列for(type element:array){循環体}type:配列または集合中のデータのタイプelement:一時変数array:配列または集合の参照注意:拡張forエルゴードの集合は、Iableインターフェースを実現する必要があります.データの下付き(位置)を明確に指摘できませんでした.
四、セットに元素を追加する時、どうやって二つのオブジェクトが同じかどう判断しますか?
1)まずhashCodeの値を比較し、hashCodeの値が等しくないなら、equals方法を比較しないで、直接に2つのオブジェクトに戻ります.2)まずhashCodeの値を比較し、hashCodeの値が等しい場合は、equals方法を比較し、equalsが2つのオブジェクトを比較すると同じではない場合は、この2つのオブジェクトに戻ります.
五、どのように要素がセットのその場所に追加されるべきかを判断しますか?(hashCodeの役割)
1)ハッシュアルゴリズムを使用すると、検索の効率を高めることができる.ハッシュ・アルゴリズムの下にハッシュ・テーブルがある.ハッシュ・テーブルは、配列に対するものである.ハッシュ・テーブルの長さは、アルゴリズム自身によって計算される.2)下の層は、ハッシュアルゴリズムを使用して、オブジェクトが格納される位置を決定する.
配置された位置=対象のhashCode%によるハッシュ表の長さ
オブジェクトのデフォルトhashCode値は、オブジェクトのアドレスによって計算されます.setに要素を追加し、対象が同じかどうかを判断するにはhashCode方法とequals方法を書き換える必要があります.どのようにhashCodeを書き換えますか?java.lang.ObjectでhashCodeを書き換える方法を提案しています.各オブジェクトを異なる位置に置くと、判定対象が同じ属性のhashCodeの値がすべて加算されます.
 public int hashCode(){
    //return 1;
    return       hashCode   ;
 }
六、TreeSet、TreeMap並べ替え:
1)自然並べ替え:順序付けが必要なクラスをjava.lang.comprableに実現する.
interface java.util.Comparator{
    public int compare(Object o1,Object o2){
        ..    
    }
}
2)上書き順序:TreeSetを作成し、TreeMapオブジェクトは並べ替え規則を指定します.このクラスが自然の並べ替えを指定できない場合は、上書きのみを使用します.例えばfinal String類は自然に並べられず、カバーで並べ替えられます.
****上書き順序の優先度は、デフォルト順序Set set=new TreeSet()より高いです.set.add(「b」)set.add(「a」)set.add(「d」)set.add("c");***このコードに問題がありますか?問題がなければどんな内容を出力しますか?
public class Student implements Comparable{
    public int compareTo(Object obj){
        ..    
    }
}
私のブログはもうすぐ騰訊雲+コミュニティに同期します.みんなを誘って一緒に入ります.https://cloud.tencent.com/developer/support-plan?invite_code=cop 0 ecwkw 1 c