On 5/7/19 4:33 PM, Brent Christian wrote:
Collection.java:

 110  * that use different membership semantics. For operations that involve more than  111  * one collection, it is specified which collection's membership semantics are
  112  * used by the operation.

addAll() and copyOf() involve more than one collection, though I agree that they do not need to be updated to specify membership semantics.

Yeah. Maybe I can be more specific here... operations that involve membership in both collections, or something.

AbstractCollection.java:


404 * obtaining an iterator from the {@code iterator} method. Each element
405 * is passed to the {@code contains} method of the specified collection.
406 * If this call returns {@code false}, the element is removed from
          ^^^^^^^^^

Is "this call" a little ambiguous?  Maybe:

"If contains() returns false..."
or
"If false is returned..."

?

Yeah I agree it's a bit clumsy. I'll tweak it to be better.

List.java:

Should containsAll(), removeAll(), retainAll() have the @implNote about contains() performance?

Good question.

I started to go and add them, but then I thought that it didn't make sense. List.contains() is almost unavoidably linear in performance -- at least our built-in List implementations are -- so the note on containsAll() is mostly pointless.

However, the bulk removals (removeAll and retainAll) on ArrayList are optimized to make a single pass over the list elements (i.e., they don't do repeated copying) so the performance of contains() on the specified collection is indeed relevant. I'll add the notes to those methods.

s'marks

Reply via email to