579 |
|
final ReentrantLock lock = this.lock; |
580 |
|
lock.lock(); |
581 |
|
try { |
582 |
– |
// Copy while checking if already present. |
583 |
– |
// This wins in the most common case where it is not present |
582 |
|
Object[] elements = getArray(); |
583 |
|
int len = elements.length; |
586 |
– |
Object[] newElements = new Object[len + 1]; |
584 |
|
for (int i = 0; i < len; ++i) { |
585 |
|
if (eq(e, elements[i])) |
586 |
< |
return false; // exit, throwing away copy |
590 |
< |
else |
591 |
< |
newElements[i] = elements[i]; |
586 |
> |
return false; |
587 |
|
} |
588 |
+ |
Object[] newElements = Arrays.copyOf(elements, len + 1); |
589 |
|
newElements[len] = e; |
590 |
|
setArray(newElements); |
591 |
|
return true; |