Java是一門面向對象的語言,那麼我們寫程序的時候最經常操作的便是對象了,為此,Java提供了一些專門用來處理對象的類庫,這些類庫的集合我們稱之為集合框架。Java集合工具包位於Java.util包下,包含了很多常用的數據結構,如數組、鏈表、棧、隊列、集合、哈希表等。學習Java集合框架下大致可以分為如下五個部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具類(Arrays、Collections)。
Java的集合類主要由兩個接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,這兩個接口又包含了一些接口或實現類。
可以看到Collection並沒有直接實現類,而是提供更具體的子接口實現。通過查詢API,可以總結出Collection的基本功能。
boolean add(E e):添加一個元素
boolean addAll(Collection<? extends E> c):添加一個集合的元素
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo1 { 7 public static void main(String[] args) { 8 Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類 9 collection1.add("紅樓夢"); 10 collection1.add("三國演義"); 11 System.out.println(collection1); 12 13 Collection collection2 = new ArrayList(); 14 collection2.add("西游記"); 15 collection2.add("水浒傳"); 16 17 collection1.add(collection2); 18 System.out.println(collection1); 19 } 20 }
輸出結果:
[紅樓夢, 三國演義] [紅樓夢, 三國演義, [西游記, 水浒傳]]
void clear():清空集合中的所有元素
boolean remove(Object o):移除指定的元素
boolean removeAll(Collection<?> c):移除一個集合的元素
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo2 { 7 public static void main(String[] args) { 8 Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類 9 collection1.add("紅樓夢"); 10 collection1.add("三國演義"); 11 collection1.add("西游記"); 12 collection1.add("水浒傳"); 13 System.out.println("初始狀態:" + collection1); 14 15 boolean b1 = collection1.remove("紅樓夢"); 16 System.out.println("是否移除了元素:" + b1); 17 System.out.println("移除一個元素:" + collection1); 18 System.out.println(); 19 20 Collection collection2 = new ArrayList(); 21 collection2.add("三國演義"); 22 collection2.add("西游記"); 23 collection2.add("平凡的世界"); 24 boolean b2 = collection1.removeAll(collection2); // 移除兩個集合的交集,只要有一個元素被移除了,就返回true 25 System.out.println("移除一個集合:" + collection1); 26 System.out.println("是否移除了元素:" + b2); 27 System.out.println(); 28 29 Collection collection3 = new ArrayList(); 30 collection3.add("平凡的世界"); 31 collection3.add("圍城"); 32 boolean b3 = collection1.removeAll(collection3);// 移除兩個集合的交集,只要有一個元素被移除了,就返回true 33 System.out.println("移除一個集合:" + collection1); 34 System.out.println("是否移除了元素:" + b3); 35 System.out.println(); 36 37 collection1.clear(); 38 System.out.println("清除集合中的所有元素:" + collection1); 39 } 40 }
輸出結果
初始狀態:[紅樓夢, 三國演義, 西游記, 水浒傳] 是否移除了元素:true 移除一個元素:[三國演義, 西游記, 水浒傳] 移除一個集合:[水浒傳] 是否移除了元素:true 移除一個集合:[水浒傳] 是否移除了元素:false 清除集合中的所有元素:[]
boolean contains(Object o):判斷集合是否包含指定元素
boolean containsAll(Collection<?> c):判斷集合是否包含指定的集合元素
boolean isEmpty():判斷集合是否為空
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo3 { 7 public static void main(String[] args) { 8 Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類 9 collection1.add("紅樓夢"); 10 collection1.add("三國演義"); 11 collection1.add("西游記"); 12 collection1.add("水浒傳"); 13 System.out.println("是否包含紅樓夢:" + collection1.contains("紅樓夢")); 14 15 Collection collection2 = new ArrayList(); 16 collection2.add("三國演義"); 17 collection2.add("西游記"); 18 collection2.add("平凡的世界"); 19 System.out.println("是否包含一個集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含 20 21 System.out.println("集合是否為空:" + collection1.isEmpty()); 22 } 23 }
輸出結果
是否包含紅樓夢:true 是否包含一個集合中元素:false 集合是否為空:false
int size():獲取集合中元素的個數
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo4 { 7 public static void main(String[] args) { 8 Collection collection = new ArrayList(); // Collection是接口,實例化其子類 9 collection.add("紅樓夢"); 10 collection.add("三國演義"); 11 collection.add("西游記"); 12 collection.add("水浒傳"); 13 System.out.println("元素個數:" + collection.size()); 14 } 15 }
輸出結果
元素個數:4
boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可選操作)。換句話說,移除此 collection 中未包含在指定 collection 中的所有元素。
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo5 { 7 public static void main(String[] args) { 8 Collection collection1 = new ArrayList(); // Collection是接口,實例化其子類 9 collection1.add("紅樓夢"); 10 collection1.add("三國演義"); 11 collection1.add("西游記"); 12 collection1.add("水浒傳"); 13 14 Collection collection2 = new ArrayList(); 15 collection2.add("西游記"); 16 collection2.add("水浒傳"); 17 System.out.println(collection1.retainAll(collection2)); 18 System.out.println("collection1:" + collection1); 19 System.out.println("collection2:" + collection2); 20 21 Collection collection3 = new ArrayList(); 22 collection3.add("西游記"); 23 collection3.add("平凡的世界"); 24 System.out.println(collection1.retainAll(collection3)); 25 System.out.println("collection1: " + collection1); 26 System.out.println("collection2: " + collection2); 27 } 28 }
輸出結果
true collection1:[西游記, 水浒傳] collection2:[西游記, 水浒傳] true collection1: [西游記] collection2: [西游記, 水浒傳]
從上面結果分析得知,collection1集合與collection2集合做交集運算,最後的結果保留在collection1中,而collection2中的元素保持不變。
Object[] toArray():集合轉數組
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 public class CollectionDemo6 { 7 public static void main(String[] args) { 8 Collection collection = new ArrayList(); // Collection是接口,實例化其子類 9 collection.add("紅樓夢"); 10 collection.add("三國演義"); 11 collection.add("西游記"); 12 collection.add("水浒傳"); 13 14 Object[] objects = collection.toArray(); 15 16 for (Object object : objects) { 17 System.out.println(object); 18 } 19 } 20 }
輸出結果
紅樓夢 三國演義 西游記 水浒傳
Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器,迭代器是集合特有的遍歷方式
其中Iterator是一個接口,其有3個方法
boolean hasNext():如果仍有元素可以迭代,則返回 true。
E next():返回迭代的下一個元素,並移動到下一個位置。
void remove():從迭代器指向的 collection 中移除迭代器返回的最後一個元素
示例代碼
1 package collection; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 7 public class CollectionDemo7 { 8 public static void main(String[] args) { 9 Collection collection = new ArrayList(); // Collection是接口,實例化其子類 10 collection.add("紅樓夢"); 11 collection.add("三國演義"); 12 collection.add("西游記"); 13 collection.add("水浒傳"); 14 15 Iterator it = collection.iterator(); 16 17 while (it.hasNext()) { 18 Object object = it.next(); 19 System.out.println(object); 20 } 21 22 it.remove(); // 如果未調用next方法,則會拋出IllegalStateException異常 23 System.out.println(collection); 24 } 25 }
輸出結果
紅樓夢 三國演義 西游記 水浒傳 [紅樓夢, 三國演義, 西游記]
至此,Collection接口的方法介紹完畢。