import
java.util.Collection;
import
java.util.HashSet;
import
java.util.Iterator;
import
java.util.Set;
import
java.util.concurrent.CopyOnWriteArraySet;
public
class
<E> GFG {
private
CopyOnWriteArraySet<E> copyOnWriteArraySet;
public
GFG()
{
copyOnWriteArraySet =
new
CopyOnWriteArraySet<E>();
}
public
GFG(Collection<?
extends
E> c)
{
copyOnWriteArraySet =
new
CopyOnWriteArraySet<E>(c);
}
public
boolean
add(E eobj)
{
return
copyOnWriteArraySet.add(eobj);
}
public
boolean
contains(Object obj)
{
return
copyOnWriteArraySet.contains(obj);
}
public
boolean
isEmpty()
{
return
copyOnWriteArraySet.isEmpty();
}
public
Iterator<E> iterator()
{
return
copyOnWriteArraySet.iterator();
}
public
boolean
remove(Object obj)
{
return
copyOnWriteArraySet.remove(obj);
}
public
int
size() {
return
copyOnWriteArraySet.size(); }
public
void
clear() { copyOnWriteArraySet.clear(); }
public
Object[] toArray()
{
return
copyOnWriteArraySet.toArray();
}
public
boolean
addAll(Collection<?
extends
E> c)
throws
UnsupportedOperationException,
ClassCastException, NullPointerException,
IllegalArgumentException
{
return
copyOnWriteArraySet.addAll(c);
}
public
boolean
retainAll(Collection<?> c)
throws
UnsupportedOperationException,
ClassCastException, NullPointerException
{
return
copyOnWriteArraySet.retainAll(c);
}
public
boolean
removeAll(Collection<?> c)
throws
UnsupportedOperationException,
NullPointerException, ClassCastException
{
return
copyOnWriteArraySet.retainAll(c);
}
public
<T> T[] toArray(T[] a)
throws
ArrayStoreException, NullPointerException
{
return
copyOnWriteArraySet.toArray(a);
}
public
static
void
main(String args[])
{
GFG<Integer> copyOnWriteArraySet
=
new
GFG<Integer>();
if
(copyOnWriteArraySet.add(
12
))
System.out.println(
"Element 12 added to Set"
);
if
(copyOnWriteArraySet.add(
13
))
System.out.println(
"Element 13 added to Set"
);
if
(copyOnWriteArraySet.add(
14
))
System.out.println(
"Element 14 added to Set"
);
if
(copyOnWriteArraySet.add(
15
))
System.out.println(
"Element 15 added to Set"
);
System.out.println(
"The size of copyOnWriteArraySet is "
+ copyOnWriteArraySet.size());
if
(copyOnWriteArraySet.contains(
14
))
System.out.println(
"The copyOnWriteArraySet contains 14"
);
else
System.out.println(
"The copyOnWriteArraySet does not contain 14"
);
if
(copyOnWriteArraySet.remove(
13
))
System.out.println(
"Element 13 removed"
);
else
System.out.println(
"Element 13 not removed"
);
System.out.println(
"The element of copyOnWriteArraySet are"
);
Iterator<Integer> iterator
= copyOnWriteArraySet.iterator();
while
(iterator.hasNext()) {
System.out.print(iterator.next() +
"\t"
);
}
System.out.println();
Set<Integer> removedSet =
new
HashSet<Integer>();
removedSet.add(
12
);
removedSet.add(
13
);
System.out.println(
"The elements after removing"
);
copyOnWriteArraySet.removeAll(removedSet);
Iterator<Integer> riterator
= copyOnWriteArraySet.iterator();
while
(riterator.hasNext()) {
System.out.print(riterator.next() +
"\t"
);
}
System.out.println();
copyOnWriteArraySet.clear();
System.out.println(
"copyOnWriteArraySet Elements are completely removed"
);
if
(copyOnWriteArraySet.isEmpty())
System.out.println(
"copyOnWriteArraySet is empty"
);
else
System.out.println(
"copyOnWriteArraySet is not empty"
);
}
}