方法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)等的返回類型之間的區別?
這是爲什麼?我將如何知道元素是否可以添加?
方法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)等的返回類型之間的區別?
這是爲什麼?我將如何知道元素是否可以添加?
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
方法 - 對於對稱性,沒有出於任何實際需要。
是的。但'addAll(int,Collection)'雖然有點奇怪。它可以返回void而不是布爾值。 – ZhongYu 2013-03-17 04:04:02
你之前評論過我都是通過輸入:) – 2013-03-17 04:07:41
你必須問誰寫了代碼,他們爲什麼選擇這樣做。 – Makoto 2013-03-17 03:58:30
@Makoto - 請參閱下面的答案。 – Korg 2013-03-17 04:10:37