Javaコレクションフレームワーク_三_Collectionインタフェース

4059 ワード

最初のブログでは、開発者がコードを書くのに最適な選択をするために、コレクション内の2つのインタフェース、Collection、Mapについて言及しています.本編からは,Collectionインタフェースとそのサブインタフェースと実装クラスを逐一学習する.
一、まずくどくど言う
Collectionインタフェースはルートインタフェースであり、Collectionを親インタフェースとするこのインタフェースのセットにはオブジェクトのセットが格納され、要素のセットとも呼ばれます.これらの要素は秩序化されているかどうか、繰り返しが許可されているかどうか、さまざまな操作に特殊性がありますか?これらの問題から,サブインタフェースList,Set,Queueがなぜ存在するのか容易に理解できる.
詳細については、JDK公式ドキュメントを参照してください.
二、方法
    1、int size()
この方法はリストを循環する際によく用いられ、集合中のオブジェクトの個数、集合中の要素の個数>Integerを得る.MAX_VALUEの場合はIntegerに戻る.MAX_VALUE.
    2、boolean isEmpty()
集合に対象が含まれているかどうかを判断し,多くは言わない.
    3、boolean contains(Object o)
セットに指定したオブジェクトが含まれているかどうかを判断します.
#指定されたオブジェクトがnullの場合、セットの少なくとも1つのオブジェクトがnullの場合、このメソッドを呼び出してtrueを返します.
#指定したオブジェクトが空でない場合、オブジェクトeがo.equals(e)を満たす場合、このメソッドを呼び出すとtrueが返されます.
#指定されたオブジェクトがnullであり、メソッドを呼び出す集合オブジェクトがnull要素の存在を許可しない場合、Null PointerException例外が放出されます.
    4、Iterator iterator
このメソッドはIterableインタフェースから継承され、このセットで反復する反復器が返されます.Collectionインタフェースでは、要素が秩序化されているかどうかは決定されません.秩序化されていても、どのようにソートされているかは決定されません.反復の順序は予知できません.
    5、Object[] toArray()
このメソッドは、オブジェクト要素のセットの格納方法を配列に変換し、配列を使用してオブジェクトのセットを管理します.反復メソッドiteratorによって返されるオブジェクトの順序も、このメソッドに作用します.
また、このメソッドを呼び出して返される配列は、元のセットに影響を及ぼさずに任意に変更できます.
この方法は配列ベースのAPIとCollectionベースのAPIとの間の橋渡しとして機能する
    6、 T[] toArray(T[] a)
指定した配列aに集合を格納しますが、aの容量が足りない場合は、集合内の要素を格納するために、a配列と同じランタイムタイプの新しい配列が作成されます.
//     List
List<String> list = new ArrayList<String>();

//     
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");

//     
String[] strArr = new String[5];

//   toArray(T[] a)  
list.toArray(strArr);

//     
System.out.println("   :");
for(String str : strArr) {
    System.out.println(str);
}

//      
System.out.println("   :");
for(String str : newStrArr) {
    System.out.println(str);
}
    :
   :
null
null
null
null
null
   :
1
2
3
4
5
6

strArrの容量は集合要素を収容するのに十分ではなく,strArrはこの仕事に適任ではなく,toArray法は新しい配列を返すことが分かった.次に、配列の容量を、下の集合要素の個数を収容するのに十分な量に増やします.
//         ,           
String[] strArr = new String[7];
strArr[0] = "IAmHere";
    :
1
2
3
4
5
6
null

このメソッドを呼び出すと、初期化された配列要素が無視され、配列がプリエンプトされ、プリエンプト後に配列に容量が残っていても初期要素に割り当てられません.
    7、boolean add(E e)
指定した要素eをコレクションに追加します.
trueを返す場合:
(1)集合にはこの要素がなく、集合は指定されたタイプEを追加することができる.
(2)集合中にこの要素が存在するが、重複要素が許容される.
falseの場合を返します.コレクションには重複要素は許可されません.コレクションにはこの要素があります.
    8、boolean remove(Object o)
セットに指定した要素oがある場合は、oを削除してtrueを返します.そうでない場合はfalseを返します.
    9、boolean containsAll(Collection c)
コレクションにコレクションcのすべての要素が含まれている場合、trueが返されます.厳しいと思いますか?
    10、boolean addAll(Collection c)
指定されたセットcのすべての要素がこのセットに追加され、セットが呼び出されて変化するとtrueが返されます.
興味深いことに、自分で自分を追加すると何が起こるのでしょうか.見てみましょう
//     List
List<String> list = new ArrayList<String>();

//     
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");

//     
list.addAll(list);

//   
for(String str : list) {
    System.out.println(str);
}
  :
1
2
3
4
5
6
1
2
3
4
5
6

合理的ですか?公式ドキュメントでは、このような呼び出しの行為は不確定だと言っていますが、私たちはそうしないほうがいいです.
    11、boolean removeAll(Collection c)
指定されたセットcにも含まれるすべての要素を削除し、呼び出しによってセットが変更されるとtrueを返します.この呼び出しは、2つのセットの交差を除去します.
    12、boolean retainAll(Collection c)
指定したセットcに含まれていないすべての要素を削除し、呼び出しによってセットが変更されるとtrueを返します.この呼び出しは、2つのセットの交差を保持します.
    13、void clear()
コレクション内のすべての要素を削除します.
    14、boolean equals(Object o)
集合と指定オブジェクトoが等しいかどうかを比較します.
    15、int hashCode()
セットのハッシュ・コード値を返します.△ハッシュコードの値を勉強しなければなりません.
三、CollectionとCollectionsの違い
Collectionは、上記の方法を提供するインタフェースです.Collectionsは、ソート、コピー、マッチング検索など、セットを専門に操作する静的メソッドを含むツールクラスです.Collectionsクラスの詳細については、今後のブログでご紹介します.