Java Collection、Map、Collectionsの紹介と違い

33114 ワード

Javaには2つの集合親インタフェースCollection、Mapがあり、Collectionタイプは各集合コンテナに1つの要素しかなく、Mapタイプは各集合コンテナに2つのkey-valueがあり、1つのNo Sqlに似ている.Collectionsは、前の2つとは性質が異なり、ツールクラスに似ています.
1 CollectionインタフェースクラスCollectionすなわちjava.util.Collectionは集合インタフェースである.集合オブジェクトを基本的に操作する汎用インタフェースメソッドを提供します.CollectionインタフェースはJavaクラスライブラリでは具体的な実装が多い.Collectionインタフェースの意味は、様々な具体的な集合に対して最大化された統一的な動作方式を提供することである.
例えば我々がよく使うmap・、setlistvectorはすべてCollectionを継承している
1.1 Collectionの親CollectionはいIterableクラスの拡張(extends)、Iterableクラスのすべてのメソッドは、Collectionが継承しており、直接使用可能です.
+Collection     extends  --java.lang.Iterable  
    +List    
        -ArrayList  
        -LinkedList  
        -Vector               

    +Queue   
        +   ,    .

    +Set   
        +SortedSet   
            -TreeSet  
    -HashSet

1.2 Collectionメソッドと実装
Collection自体はインタフェースであり、彼の具体的な方法の実現はすべて彼のサブクラスで実現されている.
メソッド名
説明
boolean add(E e)
集合に要素eを追加し、指定した集合要素が変更されるとtrueを返します.
boolean addAll(Collection extends E> c)
集合Cの要素をすべて集合に追加し、集合要素を指定するとtrueに戻ります.
void clear()
すべてのコレクション要素をクリア
boolean contains(Object o)
指定されたセットにオブジェクトが含まれているか否かを判断するo
boolean containsAll(Collection> c)
指定された集合が集合cのすべての要素を含むか否かを判断する
boolean isEmpty()
指定したコレクションの要素sizeが0であるかどうかを判断します.
boolean remove(Object o)
コレクション内の要素オブジェクトoを削除します.コレクションに複数のo要素がある場合、最初の要素のみが削除されます.
boolean removeAll(Collection> c)
指定されたセットがセットcを含む要素を削除する
boolean retainAll(Collection> c)
指定したコレクションからコレクションcを含む要素を保持し、他の要素は削除します.
int size()
集合の要素数
T[] toArray(T[] a)
集合をT型の配列に変換する
1.2.1 add
異なるタイプのオブジェクトを追加できます.
        //add   
        Collection collection = new ArrayList();
        collection.add("    1,       ");

        ArrayList arrayList = new ArrayList();
        arrayList.add("    1,       ");

        List<String> list = new ArrayList<>();
        list.add("    1,       ");

        Collection<String> coll = new HashSet<>();
        coll.add("    1");

1.2.2 addAll
        //add             、           
        Collection collection = new ArrayList();
        collection.add("    1,       ");
        collection.add("    2"); 

        Collection<String> coll = new HashSet<>();
        coll.add("    1");
        coll.add("    ");
        coll.add("    ");
        coll.add("    ");
        coll.add("    ");

        //addAll
        //         
        collection.addAll(coll);

1.2.3 containsが含むかどうか
        //contains     
        boolean a= coll.contains("A");
        boolean b = coll.contains("    ");

1.2.4 remove指定要素の削除
        coll.remove("    ");
        collection.removeAll(coll);

1.2.5 removeAll指定されたセットを削除する
        collection.removeAll(coll);

1.2.6遍歴の4つの方法
        //   for (  )
        for (String str: coll
             ) {
            System.out.println(str);

        }
        //   forEach (Java 8      )
        coll.forEach(e->System.out.println(e));
        //      Iterator hasNext
        Iterator<String> it=coll.iterator();
        while (it.hasNext()){
            String str=it.next();
            System.out.println(str);
        }
        //      Iterator   forEachRemaining (Java 8      )
        it.forEachRemaining(str->System.out.println(str));

1.2.6 Java 8述語(predicate)lambda式操作
        //predicate   
        Collection<Integer> coll2 = new ArrayList<>();
        //   0-49
        for (int i = 0; i < 50; i++) {
            coll2.add(i);
        }
        coll2.removeIf(e->(e>8 && e<20));

1.2.7 Java 8 Streamフロー操作
しばらく
2 Mapインタフェースクラス
MapはJavaでキー値対ストレージ構造Mapとして表され、彼の一般的な方法は
  • get(Object key)指定キーに対応する値(value)を取得
  • put(Kkey,V value)指定したキーを値に対応付けてセットに追加
  • remove(Object key)指定したキー(key)に従ってエレメントを削除し、削除されたエレメントの値(value)を返します.
  • +Map   
        -HashMap   (           null  /   ,  Hashtable     .)
        -Hashtable           ,      null   
        +SortedMap   
           -TreeMap  
    

    2.1 Map遍歴
    方法1 forサイクルでentriesを用いてMapの遍歴を実現する
            /**
    		 *   1: Map   for     entries  Map   
    		 */
    		System.out.println("  1-----------------------------");
    		Map <String,String> map = new HashMap<String,String>();
    		map.put("car1", "red");
    		map.put("car2", "yellow");
    		map.put("car3", "blue");
    		for(Map.Entry<String, String> entry : map.entrySet()){
    			String mapKey = entry.getKey();
    			String mapValue = entry.getValue();
    			System.out.println(mapKey+":"+mapValue);
    		}
    

    方法2 forサイクルでkeyまたはvaluesを巡回する
            /**
    		 *   2: Map   for     key  values,        map  key  value   ,       entrySet  
    		 */
    		System.out.println("  2-----------------------------");
    		for(String key : map.keySet()){
    			System.out.println(key);
    		}
    		for(String value : map.values()){
    			System.out.println(value);
    		}
    

    方法3 Iteratorによる遍歴
            /**
    		 *   3: Map    Iterator  
    		 */
    		System.out.println("  3-----------------------------");
    		Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
    		while(entries.hasNext()){
    			Map.Entry<String, String> entry = entries.next();
    			String key = entry.getKey();
    			String value = entry.getValue();
    			System.out.println(key+":"+value);
    		}
    

    3 CollectionsヘルプクラスCollectionsすなわちjava.util.Collections集合動作に関する様々な静的多態法を含むパッケージクラスである.このような方法は、JavaCollectionフレームワークにサービスするツールクラスのように実例化できない.
    3.1 sort(List list)コレクションのソート
    既知のコレクションCollectionを自然な順序でソート
            List<Integer> coll2 = new ArrayList<>();
            //   0-49
            coll2.add(12);
            coll2.add(3);
            coll2.add(2);
            coll2.add(4);
            coll2.add(5);
            coll2.add(89);
            coll2.add(1);
            coll2.add(2);
            coll2.add(6);
            coll2.forEach(e->System.out.println(e));
            Collections.sort(coll2);
            coll2.forEach(e->System.out.println(e));
    

    3.2 reverse(List list)コレクション内の要素の順序を反転
            List<Integer> coll2 = new ArrayList<>();
            //   0-49
            coll2.add(12);
            coll2.add(3);
            coll2.add(2);
            coll2.add(4);
            coll2.add(5);
            coll2.add(89);
            coll2.add(1);
            coll2.add(2);
            coll2.add(6);
            coll2.forEach(e->System.out.println(e));
            Collections.sort(coll2);
            coll2.forEach(e->System.out.println(e));
            Collections.reverse(coll2);
    

    3.3 shuffle(Collection)コレクションをランダムにソートする
    Collections.shuffle(coll2);
            Random random=new Random();
            random.nextInt();
            Collections.shuffle(coll2,random);