The List interface places additional stipulations, beyond
those specified in the Collection interface, on the
contracts of the iterator, add, remove,
equals, and hashCode methods. Declarations for
other inherited methods are also included here for convenience.
For e.g the Javadoc of add method inside List interface reads out to:
Appends the specified element to the end of this list (optional
operation).
Lists that support this operation may place limitations on what
elements may be added to this list. In particular, some lists will
refuse to add null elements, and others will impose restrictions on
the type of elements that may be added. List classes should clearly
specify in their documentation any restrictions on what elements may
be added.
whereas Javadoc of add method inside Collection interface reads out to:
Ensures that this collection contains the specified element (optional
operation). Returns true if this collection changed as a result of the
call. (Returns false if this collection does not permit duplicates and
already contains the specified element.)
Collections that support this operation may place limitations on what
elements may be added to this collection. In particular, some
collections will refuse to add null elements, and others will impose
restrictions on the type of elements that may be added. Collection
classes should clearly specify in their documentation any restrictions
on what elements may be added.
If a collection refuses to add a particular element for any reason
other than that it already contains the element, it must throw an
exception (rather than returning false). This preserves the invariant
that a collection always contains the specified element after this
call returns.