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

Comparing jsr166/src/main/java/util/concurrent/CopyOnWriteArraySet.java (file contents):
Revision 1.53 by jsr166, Thu May 2 05:56:15 2013 UTC vs.
Revision 1.54 by dl, Mon May 6 15:52:59 2013 UTC

# Line 10 | Line 10 | import java.util.Collections;
10   import java.util.Set;
11   import java.util.AbstractSet;
12   import java.util.Iterator;
13 import java.util.stream.Stream;
13   import java.util.Spliterator;
14   import java.util.Spliterators;
15 + import java.util.function.Predicate;
16 + import java.util.function.Consumer;
17  
18   /**
19   * A {@link java.util.Set} that uses an internal {@link CopyOnWriteArrayList}
# Line 85 | Line 86 | public class CopyOnWriteArraySet<E> exte
86       * @throws NullPointerException if the specified collection is null
87       */
88      public CopyOnWriteArraySet(Collection<? extends E> c) {
89 <        al = new CopyOnWriteArrayList<E>();
90 <        al.addAllAbsent(c);
89 >        if (c.getClass() == CopyOnWriteArraySet.class) {
90 >            @SuppressWarnings("unchecked") CopyOnWriteArraySet<E> cc =
91 >                (CopyOnWriteArraySet<E>)c;
92 >            al = new CopyOnWriteArrayList<E>(cc.al);
93 >        }
94 >        else {
95 >            al = new CopyOnWriteArrayList<E>();
96 >            al.addAllAbsent(c);
97 >        }
98      }
99  
100      /**
# Line 360 | Line 368 | public class CopyOnWriteArraySet<E> exte
368          return k == len;
369      }
370  
371 +    public boolean removeIf(Predicate<? super E> filter) {
372 +        return al.removeIf(filter);
373 +    }
374 +
375 +    public void forEach(Consumer<? super E> action) {
376 +        al.forEach(action);
377 +    }
378 +
379      public Spliterator<E> spliterator() {
380          return Spliterators.spliterator
381              (al.getArray(), Spliterator.IMMUTABLE |

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines