Hi.

Unfortunately in my last message I made mistake and mixed up the two sections. The main reasons for were first too many coding hours yesterday and second I had investigated this issue not yesterday but some weeks ago. During the last weeks I searched a way to participate in OpenJDK except for some high-traffic mailing list (that is IMHO development as it was in the last millennium). Especially the useless bug tracker (as it is only a bug viewer) is really not understandable to me.

Federico Peralta Schaffner wrote:
Now, how have you come to the conclusion that the problem is in the first
branch of the above if statement, and that it is related to the passed
collection's implementation details of the remove(Object o) method? I think
this is not the problem, as elements are removed from this set and not from
the passed collection.

You are right, the first section is not the problem but the second one is. I came to the same conclusion as you did when I first investigated this issue.

However I would not call a marker interface HashAccess as it reflects a technology not an implementation characteristic. E.g. a TreeSet has an access time of O(log(n)) which may also be sufficiently fast enough for the second code part of AbstractSet.removeAll() but it's implementation does not base on hashing.

Therefore my suggestion is still to simply check if the other collection is a Set and only if it is one use the second code part.

Jan

PS: If somebody answers please cc me personally as I only use the digest mode of this list.

Reply via email to