Java 中有兩個合集父接口 Collection、Map,Collection 類型每個集合容器中只有一個元素,Map類型每個集合容器中有兩個 key-value ,類似一個 No Sql。而 Collections 更像一個工具類,與前面兩個不是一個性質。
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 Java8 謂詞(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 Java8 Stream 流操作
暫無
2 Map 接口類
Map 在 Java 中表示為鍵值對存儲結構 Map<K,V>,他的常用方法包括了
- get(Object key) 獲取指定鍵(key)所對應的值(value)
- put(K key,V value) 將指定的鍵與值對應起來,並添加到集合中
- remove(Object key) 根據指定的鍵(key)刪除元素,返回被刪除元素的值(value)。
+Map 接口
-HashMap 類 (除了不同步和允許使用 null 鍵/值之外,與 Hashtable 大致相同.)
-Hashtable 類 此類是實現同步的,不允許使用 null 鍵值
+SortedMap 接口
-TreeMap 類
2.1 Map 遍歷
方法1 在for循環中使用entries實現Map的遍歷
/**
* 方法1: Map <String,String> 在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 <String,String> 在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 <String,String> 通過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);