Collection 介面是 List 介面和 Set 介面的父介面,通常情況下不被直接使用。Collection 介面定義了一些通用的方法,通過這些方法可以實現對集合的基本操作。因為 List 介面和 Set 介面繼承自 Collection 介面,所以也可以呼叫這些方法。
本節將介紹 Collection 介面中常用的方法,如表 1 所示。
表 1 Collection介面的常用方法
方法名稱 |
說明 |
boolean add(E e) |
向集合中新增一個元素,E 是元素的資料型別 |
boolean addAll(Collection c) |
向集合中新增集合 c 中的所有元素 |
void clear() |
刪除集合中的所有元素 |
boolean contains(Object o) |
判斷集合中是否存在指定元素 |
boolean containsAll(Collection c) |
判斷集合中是否包含集合 c 中的所有元素 |
boolean isEmpty() |
判斷集合是否為空 |
Iterator<E>iterator() |
返回一個 Iterator 物件,用於遍歷集合中的元素 |
boolean remove(Object o) |
從集合中刪除一個指定元素 |
boolean removeAll(Collection c) |
從集合中刪除所有在集合 c 中出現的元素 |
boolean retainAll(Collection c) |
僅僅保留集合中所有在集合 c 中出現的元素 |
int size() |
返回集合中元素的個數 |
Object[] toArray() |
返回包含此集合中所有元素的陣列 |
例 1
經過前面的介紹,我們知道 Collection 是非常重要的一個介面,在表 1 中列出了其常用方法。本案例將編寫一個簡單的程式,演示如何使用 Collection 介面向集合中新增方法。具體實現程式碼如下:
public static void main(String[] args) {
ArrayList list1 = new ArrayList(); // 建立集合 list1
ArrayList list2 = new ArrayList(); // 建立集合 list2
list1.add("one"); // 向 list1 新增一個元素
list1.add("two"); // 向 list1 新增一個元素
list2.addAll(list1); // 將 list1 的所有元素新增到 list2
list2.add("three"); // 向 list2 新增一個元素
System.out.println("list2 集合中的元素如下:");
Iterator it1 = list2.iterator();
while (it1.hasNext()) {
System.out.print(it1.next() + "、");
}
}
由於 Collection 是介面,不能對其範例化,所以上述程式碼中使用了 Collection 介面的 ArrayList 實現類來呼叫 Collection 的方法。add() 方法可以向 Collection 中新增一個元素,而呼叫 addAll() 方法可以將指定 Collection 中的所有元素新增到另一個 Collection 中。
程式碼建立了兩個集合 list1 和 list2,然後呼叫 add() 方法向 list1 中新增了兩個元素,再呼叫 addAll() 方法將這兩個元素新增到 list2 中。接下來又向 list2 中新增了一個元素,最後輸出 list2 集合中的所有元素,結果如下:
list2 集合中的元素如下:
one、two、three、
例 2
建立一個案例,演示 Collection 集合中 size()、remove() 和 removeAll() 方法的應用。具體程式碼如下:
public static void main(String[] args) {
ArrayList list1 = new ArrayList(); // 建立集合 list1
ArrayList list2 = new ArrayList(); // 建立集合 list2
list1.add("one");
list1.add("two");
list1.add("three");
System.out.println("list1 集合中的元素數量:" + list1.size()); // 輸出list1中的元素數量
list2.add("two");
list2.add("four");
list2.add("six");
System.out.println("list2 集合中的元素數量:" + list2.size()); // 輸出list2中的元素數量
list2.remove(2); // 刪除第 3 個元素
System.out.println("nremoveAll() 方法之後 list2 集合中的元素數量:" + list2.size());
System.out.println("list2 集合中的元素如下:");
Iterator it1 = list2.iterator();
while (it1.hasNext()) {
System.out.print(it1.next() + "、");
}
list1.removeAll(list2);
System.out.println("nremoveAll() 方法之後 list1 集合中的元素數量:" + list1.size());
System.out.println("list1 集合中的元素如下:");
Iterator it2 = list1.iterator();
while (it2.hasNext()) {
System.out.print(it2.next() + "、");
}
}
list2 集合在呼叫 remove(2) 方法刪除第 3 個元素之後剩下了 two 和 four。list1.removeAll(list2) 語句會從 list1 中將 list1 和 list2 中相同的元素刪除,即刪除 two 元素。最後輸出結果如下:
list1 集合中的元素數量:3
list2 集合中的元素數量:3
removeAll() 方法之後 list2 集合中的元素數量:2
list2 集合中的元素如下:
two、four、
removeAll() 方法之後 list1 集合中的元素數量:2
list1 集合中的元素如下:
one、three、
注意:retainAll( ) 方法的作用與 removeAll( ) 方法相反,即保留兩個集合中相同的元素,其他全部刪除。