2016-01-02 130 views
-3

所以我知道Collections是一個實用工具類,Collection是一個基礎接口。但是,我仍然不明白爲什麼Collections中的方法不能放入Collection中?只是爲了讓事情變得簡單嗎?爲什麼創建集合,如果我們已經有集合?

集合和集合中的方法是否存在差異?也許某些方法由不同的集合實現不同?因此,對於更通用的方法,他們被扔進實用類集合?

我想我只是好奇你怎麼決定什麼被扔進集合或集合的開發人員?任何人都可以提供這些例子嗎?

+0

我很好奇爲什麼你不能把方法從集合到集合(如.sort())。開發人員如何決定將某些方法留在Collection中,以便由不同的集合(如ArrayList)專門實現,或者其他一些方法將被放入Collections以便被普遍使用? – whales

回答

8

集合是一個接口。它定義了實施Collection的所有類必須遵守的合約:有size()方法,有iterator()方法等。

集合是一個實用類,包含與各種集合實現相關的方法:創建一個空集,轉換任何列表進入一個同步列表等等。這些是不屬於集合的方法:爲了能夠創建一個空集而創建一個新的集合將是愚蠢的,不是嗎?

現在,在Java 8中,所有這些靜態方法都可以是Collection接口的靜態方法。但

  • 這是來不及做,因爲集合自從Java 2存在
  • 有這麼多的人,他們最好分開,以避免混亂Collection接口,並使其少可以理解的。這些靜態實用方法

注意,然而,自從Java 8,一些(或至少一個)成爲一個實例方法,這要歸功於其默認方法的可能性:你可以現在排序列表使用list.sort(comparator),而不是使用Collections.sort(list, comparator)。當然,Collections.sort()仍然存在:刪除它會破壞數百萬現有的程序。

+0

非常感謝。這正是我正在尋找的答案。 – whales

相關問題