所以我知道Collections是一個實用工具類,Collection是一個基礎接口。但是,我仍然不明白爲什麼Collections中的方法不能放入Collection中?只是爲了讓事情變得簡單嗎?爲什麼創建集合,如果我們已經有集合?
集合和集合中的方法是否存在差異?也許某些方法由不同的集合實現不同?因此,對於更通用的方法,他們被扔進實用類集合?
我想我只是好奇你怎麼決定什麼被扔進集合或集合的開發人員?任何人都可以提供這些例子嗎?
所以我知道Collections是一個實用工具類,Collection是一個基礎接口。但是,我仍然不明白爲什麼Collections中的方法不能放入Collection中?只是爲了讓事情變得簡單嗎?爲什麼創建集合,如果我們已經有集合?
集合和集合中的方法是否存在差異?也許某些方法由不同的集合實現不同?因此,對於更通用的方法,他們被扔進實用類集合?
我想我只是好奇你怎麼決定什麼被扔進集合或集合的開發人員?任何人都可以提供這些例子嗎?
集合是一個接口。它定義了實施Collection的所有類必須遵守的合約:有size()
方法,有iterator()
方法等。
集合是一個實用類,包含與各種集合實現相關的方法:創建一個空集,轉換任何列表進入一個同步列表等等。這些是不屬於集合的方法:爲了能夠創建一個空集而創建一個新的集合將是愚蠢的,不是嗎?
現在,在Java 8中,所有這些靜態方法都可以是Collection接口的靜態方法。但
注意,然而,自從Java 8,一些(或至少一個)成爲一個實例方法,這要歸功於其默認方法的可能性:你可以現在排序列表使用list.sort(comparator)
,而不是使用Collections.sort(list, comparator)
。當然,Collections.sort()
仍然存在:刪除它會破壞數百萬現有的程序。
非常感謝。這正是我正在尋找的答案。 – whales
我很好奇爲什麼你不能把方法從集合到集合(如.sort())。開發人員如何決定將某些方法留在Collection中,以便由不同的集合(如ArrayList)專門實現,或者其他一些方法將被放入Collections以便被普遍使用? – whales