Java Collection、Map、Collectionsの紹介と違い
33114 ワード
Javaには2つの集合親インタフェースCollection、Mapがあり、Collectionタイプは各集合コンテナに1つの要素しかなく、Mapタイプは各集合コンテナに2つのkey-valueがあり、1つのNo Sqlに似ている.Collectionsは、前の2つとは性質が異なり、ツールクラスに似ています.
1 Collectionインタフェースクラス
例えば我々がよく使う
1.1 Collectionの親
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
異なるタイプのオブジェクトを追加できます.
1.2.2 addAll
1.2.3 containsが含むかどうか
1.2.4 remove指定要素の削除
1.2.5 removeAll指定されたセットを削除する
1.2.6遍歴の4つの方法
1.2.6 Java 8述語(predicate)lambda式操作
1.2.7 Java 8 Streamフロー操作
しばらく
2 Mapインタフェースクラス
MapはJavaでキー値対ストレージ構造Mapとして表され、彼の一般的な方法はget(Object key)指定キーに対応する値(value)を取得 put(Kkey,V value)指定したキーを値に対応付けてセットに追加 remove(Object key)指定したキー(key)に従ってエレメントを削除し、削除されたエレメントの値(value)を返します.
2.1 Map遍歴
方法1 forサイクルでentriesを用いてMapの遍歴を実現する
方法2 forサイクルでkeyまたはvaluesを巡回する
方法3 Iteratorによる遍歴
3 Collectionsヘルプクラス
3.1 sort(List list)コレクションのソート
既知のコレクションCollectionを自然な順序でソート
3.2 reverse(List list)コレクション内の要素の順序を反転
3.3 shuffle(Collection)コレクションをランダムにソートする
1 Collectionインタフェースクラス
Collection
すなわちjava.util.Collection
は集合インタフェースである.集合オブジェクトを基本的に操作する汎用インタフェースメソッドを提供します.Collection
インタフェースはJava
クラスライブラリでは具体的な実装が多い.Collection
インタフェースの意味は、様々な具体的な集合に対して最大化された統一的な動作方式を提供することである.例えば我々がよく使う
map
・、set
、list
、vector
はすべて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として表され、彼の一般的な方法は
+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
集合動作に関する様々な静的多態法を含むパッケージクラスである.このような方法は、Java
のCollection
フレームワークにサービスするツールクラスのように実例化できない.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);