Javaのいくつかのリストの簡単な紹介

6358 ワード

JAvaのリストの簡単な紹介と反復器
Collectionクラスには、次のタイプのコンテナがあります.
  • Listは、特定の順序で要素
  • を保存する.
  • Set要素は
  • を繰り返すことができません.
  • Queueチェーンテーブルは、一端からのみ対象を挿入する、他端から取り出す先進先出原則
  • に従う.
  • Mapキー値対挿入
  • リストには2種類のリストがあります.
  • ArrayList:ランダムアクセスが速く、挿入削除が遅い
  • LinkedList:挿入削除は速いが、ランダムアクセスは遅い.スタック、キュー、両端リストとしてのメソッドも追加され、直接スタックとして使用できます.「後進先出、先進後出」の原則を遵守します.romove()romovefirst()はリストヘッダを返し、addfirst()addlast()はリストの末尾getfirst()element()peek()はリストヘッダ
  • に挿入されます.
    Set SetはCollectionと全く同じインタフェースを持つため、追加の機能はなく動作が異なるだけで、重複する要素を保存することはできません.
  • HashSet使用ハッシュ
  • TreeSetは、要素を赤-黒ツリーデータ構造中の
  • に格納する.
  • LinkedHashSetもハッシュを使用していますが、チェーンテーブルを使用して要素の挿入順序contains(要素)を維持し、その要素が含まれているかどうかを確認します.
    Mapはキー値対KeyValueの形式でオブジェクト-HashMapを格納します:無秩序で、入れる順序に関係なく-LinkedHashMap:格納時にputのミリ数を記録し、遍歴時に格納する順序で出力します
    Map map=new HashMap();
    map.put(k,v);
    map.get(k)  value

    Mapは多次元にも拡張できます
    Map<K,List>> maps=new HashMapList>>();

    2チェーンテーブルに要素を追加する方法
    1 Collections.addAll()は複数のパラメータを受け入れ、その後のパラメータを配列に変換して最初のパラメータのシーケンスに格納する
    2リストインスタンスを作成するとき、入力パラメータはArrayを使用することができる.asList()はパラメータ配列をリストリスト形式に変換し、パラメータは配列またはカンマで分割できる要素リスト
    Collection<> collection=new ArrayList<>(Arrays.asList(1,2,3,4,5))//      
    Collections.addAll(collection,1,2,3,4,5,6)//                  
    Collection.addAll(collection,moreInts)

    3 foreachと反復器Iterable
    すべてのCollectionタイプのオブジェクトはimplements Iterableインタフェースを強制的に要求されるため、どのCollectionオブジェクトもその反復器Iteratorを返すことができます.
    Collection<> collection=new ArrayList<>
    Iterator<> it=collection.iterator()

    反復器の内部コードは次のとおりです.
    Interface Iterator{
    boolean  hasNext() 
              Returns true if the iteration has more elements.
    
     E  next() 
              Returns the next element in the iteration.
    
    void  remove() 
              Removes from the underlying collection the last element returned by the iterator (optional operation).
              }

    iteratorの使用には通常この3つの方法が含まれています
    Iteraotr it= arrayList.Iterator();
    while(it.hasNext())
    {
      print(it.next());
          it.remove();
    }

    foreach遍歴では、内部にIterableインタフェースのiteraterメソッドが使用されています.
    for(type var:coll()){body-of-loop; }
        :
    for(Iterator<type> iter=coll.iterator(); iter.hasNext();){
        type var=iter.next();
        body-of-loop;
    }

    Iterableを実装したすべてのクラスは、foreach文で使用できます.たとえば、次のようになります.
    public class IterableClass implements Iterable{
        protected String[] words=("And that is how "+
        "we know the earth to be banana-shaped.").split(" ")//           
        public Iterable iterator(){
            return new Iterable(){
                private int index=0;
                public boolean hasNext(){
                    return indexpublic String next(){
                    return word[index++];
                }
                public remove(){}
            };
        }
        public static void main(String[] args){
            for(String s:new IterableClass())
                System.out.print(s+" ")
        }
    }
    Output: And that is how we know the earth to be banana-shaped.