2013-03-17 58 views
2

方法addAll(int index, Collection<? extends E> c)add(E e)返回boolean以通知元素已被成功添加。另一方面,add(int index, E element)沒有。AbstractList <E> - add(int index,E元素),add(e e)等的返回類型之間的區別?

這是爲什麼?我將如何知道元素是否可以添加?

+2

你必須問誰寫了代碼,他們爲什麼選擇這樣做。 – Makoto 2013-03-17 03:58:30

+0

@Makoto - 請參閱下面的答案。 – Korg 2013-03-17 04:10:37

回答

3

add(E)Collection的成員。對於某些種類的收藏 - Set,它保證了唯一性,特別是 - 有時添加一個元素可能會以非驚人的方式「失敗」,因爲元素已經在收藏中。在這種情況下,布爾返回值很有用。

add(int, E),在另一方面,是List的構件,並且將一個元素增加到列表絕不會以這種方式失敗 - 一個List,根據定義,可以包含重複的元素。

addAll(int, Collection<E>)有點困難。它是List的成員,所以根據定義,添加不會被拒絕。 Javadoc表示,如果此列表因呼叫而改變,則返回true。「我想如果參數是一個空集合,它可能會返回false。這似乎不是很有用。

但請注意,Collection中有addAll(Collection<E>),當所有添加的元素都是重複且集合爲Set時,可以返回false。所以我想List方法返回boolean,因爲Collection方法 - 對於對稱性,沒有出於任何實際需要。

+0

是的。但'addAll(int,Collection)'雖然有點奇怪。它可以返回void而不是布爾值。 – ZhongYu 2013-03-17 04:04:02

+0

你之前評論過我都是通過輸入:) – 2013-03-17 04:07:41

相關問題