Java Collection介面

2020-07-16 10:05:20
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( ) 方法相反,即保留兩個集合中相同的元素,其他全部刪除。