Set(セット)List(リスト)


JAVA集合は主に三つのタイプに分けられます。 
  • セット(セット) 
  • List(リスト) 
  • Map(マッピング) 
  • Collectionインターフェース:Collectionは最も基本的な集合インターフェースであり、JAVAセット(SetとListのみを含む)に適用される共通の方法を声明している。 SetとListはCollection、Mapを引き継いでいます。
    Collectionインターフェースの方法: 
    book add(Object o)      :オブジェクトの参照をセットに追加します。 
    void clear():集合中のすべてのオブジェクトを削除する、つまりこれらのオブジェクトの参照を持たない 
    bollan isempty()    :集合が空かどうかを判断する。 
    bootlean contains(Object o):集合中に特定のオブジェクトの参照があるかどうかを判断する。 
    Iterartor iterator()  :Iteratorオブジェクトを返します。集合中の要素を巡回するために使用できます。 
    bollan remove(Object o):集合からオブジェクトの参照を削除します。 
    int size()       :セット内の要素の数を返します。 
    Object[]toAray()    : セット内のすべての要素を含む配列を返します。 
    について:Iterator()とtoAray()の方法は、集合のすべての要素に使用され、前者はIteratorオブジェクトを返し、後者は、セット内のすべての要素を含む配列を返します。 
    Iteratorインターフェースは次のような方法を表しています。 
    has Next():集合中の要素が遍歴したかどうかを判断し、ない場合はtrueに戻ります。 
    next():次の要素を返します。 
    remove():集合から前のnext()メソッドで返された要素を削除します。 
    セット: セットは一番簡単な集合です。セット内のオブジェクトは特定の方法で並べ替えられず、重複したオブジェクトはありません。Setインターフェースは主に二つの実装クラスを実現しています。
  • hashSet:hashSet類は、ハッシュ・アルゴリズムに従ってセット内のオブジェクトにアクセスし、アクセス速度が比較的速い。 
  • TreeSet:TreeSet類は、集合中のオブジェクトを並べ替えることができます。 
  • Setの使い方:保存されているのは対象の参照で、重複したオブジェクトはありません。
    Set set=new HashSet();   String s1=new String("hello");   String s2=s1;   String s3=new String("world");   set.add(s1);   set.add(s2);   set.add(s3);   System.out.println(set.size());//             2。
    Setのadd()方法は、オブジェクトがセットに保存されているかどうかをどう判断しますか? 
    boolean isExists=false;   Iterator iterator=set.iterator();   while(it.hasNext())           {   String oldStr=it.next();   if(newStr.equals(oldStr)){   isExists=true;   }   }
    List(リスト):Listは、その要素が線形的に記憶され、集合中に重複オブジェクトが格納されることを特徴とする。 
    Listインターフェースの主要な実現クラスは以下を含む。
  • ArayList():代表長さは配列を変更することができる。要素はランダムにアクセスでき、ArayList()への挿入と削除の速度は遅いです。 
  • LinkdList():実現にチェーンデータ構造を採用する。挿入と削除の速度が速く、アクセス速度が遅いです。 
  • Listのランダムアクセスとは、特定の位置に位置する要素のみをランダムに検索することである。Listのget(int index)メソッドは、集合中のパラメータindexによって指定されたインデックス位置のオブジェクトに戻し、下付きは「0」から開始します。最も基本的な2つのセットの中のすべてのオブジェクトを検索する方法: 
    1:forサイクルとget()方法: 
    for(int i=0; i<list.size();i++){   System.out.println(list.get(i));   }
    2:シーズマリーを使う: 

  • Iterator it=list.iterator()  
  •  
  • while(it.hash Next){  
  •  
  • System.out.println(it.next)  
  •  
  • }  
  • Map(マップ): 
    Mapはキーオブジェクトと値オブジェクトをマッピングするセットで、各要素はキーオブジェクトと値オブジェクトのペアを含んでいます。MapはCollectionインターフェースに引き継がれていません。Mapセットから要素を検索すると、キーオブジェクトが与えられると、対応する値オブジェクトが返されます。 
    Mapの常用方法: 
    1追加、削除操作: 
    Object put(Object key,Object value):集合に要素を加える 
    Object remove(Object key):KEYに関連する要素を削除します。 
    void putAll(Map t):  特定のイメージからのすべての要素をイメージに追加します。 
    void clear():映像からすべてのマップを削除します。 
    2クエリの操作: 
    Object get(Object key):キーワードkeyに関する値を得る。Map集合におけるキーオブジェクトの重複は許されない。すなわち、任意の2つのキーオブジェクトはequals()法によって比較された結果はfalseである。しかし、任意の複数のキーを同一の値オブジェクトに独立にマッピングすることができる。 
    Connection:実用類を集合する。CollectionはJAVA集合のための実用的な静的方法を提供しています。 
    まとめ: 
    JAVA集合の基本的な使い方は全部まとめました。これらは普段最もよく使われているJAVA集合です。具体的な他に、JDKヘルプ文書も参考にします。 
    bollan containsKey(Object key):イメージにキーワードがあるかどうかを判断するkey 
    bootlean containsValue:映像に値があるかどうかを判断するvalue 
    int size():現在のイメージのマッピング数を返します。 
    bolean isEmpty():映像に何か写像があるかを判断する。
    Listは、オブジェクトが入る順にオブジェクトを保存し、並べ替えや編集は行わない。Setは、各オブジェクトに対して一回だけ受け入れて、自分の内部の並べ替え方法を使っています。(通常は、ある要素がSetに属しているかどうかだけに関心を持っています。順序に関係なく。そうでなければ、Listを使うべきです。)Mapも同じように要素ごとに1つを保存しますが、これはキーに基づいています。Mapも内蔵の順序がありますので、要素の追加の順序には関心がありません。要素を追加する順序が重要であれば、Linked HashSetまたはLinked HashMapを使うべきです。 
    Listの機能方法 実際には2つのLisがあります。1つは基本的なArayListで、その利点はランダムアクセス要素であり、もう1つはより強力なLinkedListであり、高速ランダムアクセスのために設計されたのではなく、より一般的な方法を備えています。
    List:順序はListの最も重要な特徴です。元素の特定の順序を維持することを保証します。ListはCollectionのために多くの方法を追加し、Listの中間に要素を挿入して除去することができるようにした。一つのListはListIteratorを生成することができ、それを使用してListを2つの方向から遍歴することもでき、Listの中間から要素を挿入して除去することもできる。 
    ArayList:配列により実現されるList。要素の高速ランダムアクセスを許可しますが、Listへの中間挿入と除去要素の速度は遅いです。ListIteratorは、要素を挿入および除去するために使用されるのではなく、後方からArayListを巡回するためにのみ使用されるべきである。それはLinkdListよりずっと大きいからです。 
    Linked List:シーケンスアクセスを最適化し、Listの中間に挿入し、削除するオーバーヘッドは大きくない。ランダムアクセスは比較的遅いです。(ArayListを用いて代替する。)次の方法もある。addFirst()、addLast()、get First()、get Last()、removeFirst()、および  これらの方法(インターフェースまたはベースクラスのいずれにも定義されていない)は、Linked Listがスタック、キュー、および双方向キューとして使用できるようにする。 
    Setの機能方法 
    SetはCollectionと全く同じインターフェースを持っているので、前の2つの異なるListとは違って、追加の機能はない。実際にはSetはCollectionで、行為が違っています。(これは多形思想を継承する典型的な応用です。異なる行為を表現します。)Setは重複した要素を保存しません。 
    Set:Setを保存する各要素は重複要素を保存しないため、一意でなければなりません。Setを追加する要素は、オブジェクトの一意性を確保するためにequals()方法を定義しなければならない。SetとCollectionは全く同じインターフェースがあります。Setインターフェースは保守要素の順序を保証しない。 
  • hashSet:快速検索のためのデザインのSet。HashSetに預け入れたオブジェクトはhashCodeを定義しなければなりません。 
  • TreeSet:保存順序のSetは、下の層がツリー構造である。Setから秩序化したシーケンスを抽出することができる。 
  • Linked HashSet:HashSetのクエリ速度を持ち、内部にチェーンを使用して要素を維持する順序(挿入の順序)。そこで、Setをシーケンサで巡ると、要素の挿入順に結果が表示されます。
  • Mapの機能方法
    メソッドput(Object key,Object)  valueは「値」(欲しいもの)と「値」に関連する「キー」(key)を追加します。メソッドget(Object)  key)は、与えられたキーに関連する「値」を返します。containsKey()とcontainsValue()でMapにある「キー」または「値」が含まれているかどうかをテストできます。標準的なJavaクラスライブラリにはいくつかの異なるMap:HashMap,TreeMap,Linked HashMap,WeakhashMapが含まれています。  IdentityHashMap。彼らは同じ基本インターフェースMapを持っていますが、行動、効率、ソート戦略、保存対象のライフサイクル、キーの等価を判定する策略などはそれぞれ違います。 
    実行効率はMapの大きな問題です。get()が何をしているかを見ると、ArayListでは「キー」の検索がかなり遅いのかが分かります。これはまさにHashMapがスピードを上げるところです。HashMapは特殊な値を使っています。これを「ハッシュコード」といいます。  キーの代わりに、ゆっくりと検索します。「ハッシュコード」は、オブジェクトを表すための「相対一意」のint値であり、このオブジェクトのある情報を変換することによって生成される。すべてのJavaオブジェクトは、hashCode()がベースクラスObjectに定義される方法であるため、ハッシュコードを生成することができる。 
    HashMapとは、対象のhashCodeを使って迅速に検索するものです。この方法は性能を著しく向上させることができる。 
    Map:「キーペア」の関連性を維持し、「キー」から「値」を検索することができます。
    HashMap:Mapは、ハッシュリストに基づいて実装されます。「キーペア」の挿入とクエリーのオーバーヘッドは固定されています。容量capacityと負荷因子load factorをコンストラクタで設定し、容器の性能を調整することができます。 
    Linked HashMap:HashMapに似ていますが、それを繰り返して見た場合、「キーペア」を取得する順序は挿入順、または最近少なくとも(LRU)を使用する順序です。HashMapより少し遅いです。繰り返しアクセスする時に、チェーンを使って内部順序を維持するので、より速く送ります。 
    TreeMap:  赤黒いツリーのデータ構造に基づいて実現した。「キー」または「キーペア」を見ると、それらは並べ替えられます。TreeMapの特徴は、結果が順序付けされていることです。TreeMapは、サブツリーを返すことができる唯一のsubMap()方法のMapである。 
    WeakhashMao:弱いキー(weak key)Map、Mapで使用されているオブジェクトもリリースされます。これは特殊な問題を解決するために設計されたものです。map以外の参照がある「キー」を指していない場合、この「キー」はごみ箱に回収されます。 
    IdentifyHashMap:equals()の代わりに「キー」を比較するhash mapを使用します。特別な問題を解決するために設計します。