src/share/classes/java/util/concurrent/CopyOnWriteArraySet.java
Print this page
@@ -105,13 +105,20 @@
*
* @param c the collection of elements to initially contain
* @throws NullPointerException if the specified collection is null
*/
public CopyOnWriteArraySet(Collection<? extends E> c) {
+ if (c.getClass() == CopyOnWriteArraySet.class) {
+ CopyOnWriteArraySet<E> s = (CopyOnWriteArraySet<E>) c;
+ al = (CopyOnWriteArrayList<E>) s.al.clone();
+ } else if (c instanceof Set) {
+ al = new CopyOnWriteArrayList<E>(c);
+ } else {
al = new CopyOnWriteArrayList<E>();
al.addAllAbsent(c);
}
+ }
/**
* Returns the number of elements in this set.
*
* @return the number of elements in this set