2010-07-23 68 views

回答

192

首先:a ListCollection。然而,這是專門的Collection

A Collection就是這樣:項目的集合。您可以添加內容,刪除內容,迭代內容並查詢內容中有多少內容。

一個List增加了約的東西給它一個定義序列的信息:你可以在位置ñ獲得元素,你可以在位置ň添加元素,你可以在位置刪除元素ñ

Collection你不能這樣做:「該集合中的第5個元素」沒有定義,因爲沒有定義的順序。

還有其他專門的集合,例如Set,它增加了它永遠不會包含相同元素兩次的功能。

+6

是的,列表是一個有序的專業化的集合(但沒有排序)+1 – atamanroman 2010-07-23 11:09:07

+2

Java中的列表擴展集合接口,並建立索引函數,這有助於基於位置的檢索和刪除行爲 – frictionlesspulley 2010-07-23 18:46:26

137

Collection是java Collections層次結構的根接口。 List是定義有序集合的一個子接口,其他子接口通常將存儲準備處理的元素(例如stack)。

下圖展示了不同的Java集合類型之間的關係:

java collections

+0

真的很喜歡你的圖片,我在準備SCJP時看到它,但幾乎忘記了這些日子裏所有的東西。 – 2010-07-23 10:59:01

+1

我必須承認,這個圖像是[從這個博客挖掘](http://www.programcreek.com/2009/02/the-interface-and-class-hierarchy-for-collections/)。我也首先在[K&B SCJP書](http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060/)中看到了這樣的圖表。 – krock 2010-07-23 11:02:56

+0

你可以從scjp證書中學到很多東西,大部分這個主題的書都很棒:) – atamanroman 2010-07-23 11:07:25

2

收集是描述可以包含其他對象的集合的Java對象的高級別接口。關於它們的訪問方式,相同對象的多個副本是否可以存在於同一個集合中,或者該順序是否重要,這並不是很具體。 清單具體是訂購的對象集合。如果您按照特定順序將對象放入列表中,它們將保持該順序。

決定在哪裏使用這兩個接口比決定使用什麼具體實現要重要得多。這將對您的程序的時間和空間性能產生影響。例如,如果你想要一個列表,你可以使用一個ArrayList或一個LinkedList,每一個都會對應用程序產生影響。對於其他集合類型(例如集合),類似的考慮因素適用。

2

Collection是List的超級接口,所以每個Java列表也是一個集合實例。集合只能按順序迭代(並且沒有特定順序),而列表允許通過get(int index)方法訪問特定位置的元素。

7

的Java API就是最好的回答這個

收集

中的根接口在收集 層次。一個集合代表一個 對象組,稱爲其 元素。有些館藏允許 重複元素,而其他館藏則不允許。 一些是命令和其他無序。 JDK不提供此接口的任何直接 實現:它提供了更多 特定子接口(如Set和 列表)的實現。通常使用此接口 來傳遞集合,並且 在需要最大化通用性時操縱它們。

列表(擴展集)

有序的collection(也稱爲 序列)。此接口 的用戶可精確控制每個元素插入的 列表中的哪個位置。 用戶可以通過它們的 整數索引(列表中的位置), 來訪問元素,並搜索列表中的元素。

與集合不同,列表通常允許 重複的元素。更正式地, 列表通常允許成對的元素e1和e2,使得如果 完全允許空元素,則它們允許多個空元素。這不是 不可思議有人希望 實施禁止 副本列表,通過拋出運行時異常 當用戶試圖 插入它們,但我們希望這種用法 是罕見的。

2

集合是Java Collections層次結構的主要接口,而List(Sequence)是定義有序集合的子接口之一。

0

List和Set是Collection的兩個子類。

在列表中,數據特別是順序。

在Set中,它不能包含兩次相同的數據。

在集合中,它只是存儲沒有特定順序的數據,並且可以包含重複數據。

相關問題