Collection 介面定義了清單、向量、堆疊、佇列、優先權佇列和集合的常用操作。
Java 集合框架支援兩種類型的容器:
地圖是高效率的資料結構,可使用鍵快速搜尋元素。以下是以下收藏。
這些集合的共同特徵在介面中定義,並在具體類別中提供實現,如下圖所示。
Java Collections Framework 中定義的所有介面和類別都分組在 java.util 套件中。
Java 集合框架的設計是使用介面、抽象類別和具體類別的一個很好的例子。接口定義了框架。抽象類別提供部分實作。具體類別用具體資料結構實作介面。提供部分實作介面的抽象類別可以方便使用者編寫程式碼。使用者可以簡單地定義一個擴展抽象類別的具體類,而不是實作介面中的所有方法。為了方便起見,提供了諸如 AbstractCollection 之類的抽象類別。因此,它們被稱為便利抽象類別。
Collection 介面是操作物件集合的根介面。其公共方法如下圖所示。 AbstractCollection 類別提供 Collection 介面的部分實作。它實作了 Collection 中除 add、size 和 iterator 方法以外的所有方法。這些在適當的具體子類中實現。
Collection 介面提供了在集合中新增和刪除元素的基本操作。 add 方法將一個元素加入集合。 addAll 方法將指定集合中的所有元素加入此集合。 remove 方法從集合中刪除一個元素。 removeAll 方法從該集合中刪除指定集合中存在的元素。 retainAll 方法保留此集合中也存在於指定集合中的元素。所有這些方法都回傳 boolean。如果方法執行導致集合發生更改,則傳回值為 true。 clear() 方法只是從集合中刪除所有元素。
方法 addAll、removeAll 和 retainAll 與集合的並集、差集和交集操作類似。
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 的任何具體類,例如HashSet、LinkedList、Vector 和StackStackArrayList 測試
Collection介面中定義的這些方法。 程式建立陣列清單的副本(第 30、35、40 行)。這樣做的目的是保持原始數組列表不變,並使用其副本執行 addAll、retainAll 和
removeAll操作。 Java Collections Framework 中的所有具體類別都實作java.lang.Cloneable 和java.io.Serialized 接口,除了java.util.PriorityQueue 接口,除了java.util.PriorityQueue >沒有實作Cloneable 介面。因此,除了優先權佇列之外的所有
Cloneable 實例都可以被克隆,並且 Cloneable 的所有實例都可以被序列化。以上是收藏的詳細內容。更多資訊請關注PHP中文網其他相關文章!