2

メソッドaddAll(int index, Collection<? extends E> c)およびメソッドは、要素が正常に追加されたことを通知するためにadd(E e)a を返します。boolean一方、そうでadd(int index, E element)はありません。

なぜこのようになっているのですか?要素を追加できるかどうかを知るにはどうすればよいですか?

4

1 に答える 1

3

add(E)のメンバーですCollection。一部の種類のコレクションSet(特に一意性が保証される) では、要素が既にコレクションに含まれているため、要素の追加が予期せぬ方法で「失敗」することがあります。その場合、ブール値の戻り値が役立ちます。

add(int, E)一方、 は のメンバーでありList、要素をリストに追加すると、このように失敗することはありませんList。定義により、 は重複する要素を含むことができます。

addAll(int, Collection<E>)は少し難しいです。のメンバーでListあるため、定義上、追加は拒否されません。Javadoc によると、「呼び出しの結果としてこのリストが変更された場合」に true が返されます。引数が空のコレクションの場合、false が返される可能性があると思います。これはあまり役に立たないようです。

ただし、addAll(Collection<E>)inCollectionがありfalse、追加されたすべての要素が重複し、コレクションがSet. したがって、Listメソッドが返されるのは、実際の必要性からではなく、対称性booleanのためだと思います。Collection

于 2013-03-17T04:02:14.037 に答える