收藏

WBOY
WBOY原創
2024-07-17 08:51:37498瀏覽

Collection 介面定義了清單、向量、堆疊、佇列、優先權佇列和集合的常用操作。

Java 集合框架支援兩種類型的容器:

  • 用來儲存元素集合的集合簡稱為集合
  • 另一個用於儲存鍵/值對,稱為映射

地圖是高效率的資料結構,可使用鍵快速搜尋元素。以下是以下收藏。

  • 集合儲存一組不重複的元素。
  • 列表儲存元素的有序集合。
  • 堆疊儲存以後進先出方式處理的物件。
  • 佇列儲存以先進先出方式處理的物件。
  • PriorityQueue儲存按優先順序處理的物件。

這些集合的共同特徵在介面中定義,並在具體類別中提供實現,如下圖所示。

Image description

Java Collections Framework 中定義的所有介面和類別都分組在 java.util 套件中。

Java 集合框架的設計是使用介面、抽象類別和具體類別的一個很好的例子。接口定義了框架。抽象類別提供部分實作。具體類別用具體資料結構實作介面。提供部分實作介面的抽象類別可以方便使用者編寫程式碼。使用者可以簡單地定義一個擴展抽象類別的具體類,而不是實作介面中的所有方法。為了方便起見,提供了諸如 AbstractCollection 之類的抽象類別。因此,它們被稱為便利抽象類別。

Collection 介面是操作物件集合的根介面。其公共方法如下圖所示。 AbstractCollection 類別提供 Collection 介面的部分實作。它實作了 Collection 中除 addsizeiterator 方法以外的所有方法。這些在適當的具體子類中實現。

Image description

Collection 介面提供了在集合中新增和刪除元素的基本操作。 add 方法將一個元素加入集合。 addAll 方法將指定集合中的所有元素加入此集合。 remove 方法從集合中刪除一個元素。 removeAll 方法從該集合中刪除指定集合中存在的元素。 retainAll 方法保留此集合中也存在於指定集合中的元素。所有這些方法都回傳 boolean。如果方法執行導致集合發生更改,則傳回值為 trueclear() 方法只是從集合中刪除所有元素。

方法 addAllremoveAllretainAll 與集合的並集、差集和交集操作類似。

Collection介面提供了各種查詢操作。 size 方法傳回集合中元素的數量。 contains 方法檢查集合是否包含指定元素。 containsAll 方法檢查集合是否包含指定集合中的所有元素。如果集合為空,isEmpty 方法將傳回 true

Collection 介面提供 toArray() 方法,該方法傳回集合的陣列表示形式。

Collection 介面中的某些方法無法在具體子類別中實作。在這種情況下,該方法將拋出 java.lang.UnsupportedOperationException,它是 RuntimeException 的子類別。這是一個很好的設計,您可以在您的專案中使用。如果某個方法在子類別中沒有意義,可以如下實現:

public void someMethod() {
拋出新的 UnsupportedOperationException
(“不支援該方法”);
}

下面的程式碼給出了使用 Collection 介面中定義的方法的範例。

package demo;
import java.util.*;

public class TestCollection {

    public static void main(String[] args) {
        ArrayList<String> collection1 = new ArrayList<>();
        collection1.add("New York");
        collection1.add("Atlanta");
        collection1.add("Dallas");
        collection1.add("Madison");

        System.out.println("A list of cities in collection1:");
        System.out.println(collection1);

        System.out.println("\nIs Dallas in collection1? " + collection1.contains("Dallas"));

        collection1.remove("Dallas");
        System.out.println("\n" + collection1.size() + " cities are in collection1 now");

        Collection<String> collection2 = new ArrayList<>();
        collection2.add("Seattle");
        collection2.add("Portland");
        collection2.add("Los Angeles");
        collection2.add("Atlanta");

        System.out.println("\nA list of cities in collection2:");
        System.out.println(collection2);

        ArrayList<String> c1 = (ArrayList<String>)(collection1.clone());
        c1.addAll(collection2);
        System.out.println("\nCities in collection1 or collection2: ");
        System.out.println(c1);

        c1 = (ArrayList<String>)(collection1.clone());
        c1.retainAll(collection2);
        System.out.print("\nCities in collection1 and collection2: ");
        System.out.println(c1);

        c1 = (ArrayList<String>)(collection1.clone());
        c1.removeAll(collection2);
        System.out.print("\nCities in collection1, but not in 2: ");
        System.out.println(c1);
    }

}

收藏城市列表1:
[紐約、亞特蘭大、達拉斯、麥迪遜]
達拉斯在收藏1嗎?是的
現已收集 3 個城市1
收藏城市列表2:
[西雅圖、波特蘭、洛杉磯、亞特蘭大]
集合 1 或集合 2 中的城市:
[紐約、亞特蘭大、麥迪遜、西雅圖、波特蘭、洛杉磯、亞特蘭大]
集合 1 和集合 2 中的城市:[亞特蘭大]
城市在集合 1 中,但不在集合 2 中:[紐約、麥迪遜]

程式使用ArrayList建立一個特定的集合物件(第7行),並呼叫Collection介面的contains方法(第16行), remove 方法(第18 行)、size 方法(第19 行)、addAll 方法(第31 行)、retainAll 方法(第31 行)、retainAll 方法(第36 行)和

removeAll

方法(第41 行)。 在此範例中,我們使用 ArrayList。您可以使用Collection 的任何具體類,例如HashSetLinkedListVectorStackStackArrayList 測試

Collection

介面中定義的這些方法。 程式建立陣列清單的副本(第 30、35、40 行)。這樣做的目的是保持原始數組列表不變,並使用其副本執行 addAllretainAll

removeAll

操作。 Java Collections Framework 中的所有具體類別都實作java.lang.Cloneablejava.io.Serialized 接口,除了java.util.PriorityQueue 接口,除了java.util.PriorityQueue >沒有實作Cloneable 介面。因此,除了優先權佇列之外的所有

Cloneable 實例都可以被克隆,並且 Cloneable 的所有實例都可以被序列化。

以上是收藏的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn