ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/CopyOnWriteArrayList.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/CopyOnWriteArrayList.java (file contents):
Revision 1.102 by jsr166, Sat Apr 6 17:21:51 2013 UTC vs.
Revision 1.103 by jsr166, Fri Apr 12 18:44:19 2013 UTC

# Line 715 | Line 715 | public class CopyOnWriteArrayList<E>
715          Object[] cs = c.toArray();
716          if (cs.length == 0)
717              return 0;
718        Object[] uniq = new Object[cs.length];
718          final ReentrantLock lock = this.lock;
719          lock.lock();
720          try {
721              Object[] elements = getArray();
722              int len = elements.length;
723              int added = 0;
724 <            for (int i = 0; i < cs.length; ++i) { // scan for duplicates
724 >            // uniquify and compact elements in cs
725 >            for (int i = 0; i < cs.length; ++i) {
726                  Object e = cs[i];
727                  if (indexOf(e, elements, 0, len) < 0 &&
728 <                    indexOf(e, uniq, 0, added) < 0)
729 <                    uniq[added++] = e;
728 >                    indexOf(e, cs, 0, added) < 0)
729 >                    cs[added++] = e;
730              }
731              if (added > 0) {
732                  Object[] newElements = Arrays.copyOf(elements, len + added);
733 <                System.arraycopy(uniq, 0, newElements, len, added);
733 >                System.arraycopy(cs, 0, newElements, len, added);
734                  setArray(newElements);
735              }
736              return added;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines