实现 CopyOnWriteArraySet API 的Java程序
CopyOnWriteArraySet是Java集合框架的成员。它是一个使用内部 CopyOnWriteArrayList 进行所有操作的 Set。它是在 JDK 1.5 中引入的,可以说它是 Set 的线程安全版本。要使用这个类,我们需要从Java.util.concurrent包中导入它。
执行:
例子
Java
// Java Program to Implement CopyOnWriteArraySet API
// Importing required utility classes
// from java.util package
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
// CopyOnWriteArraySetImpl
public class GFG {
private CopyOnWriteArraySet copyOnWriteArraySet;
// Constructor oof this class
public GFG()
{
// Creating an empty set
copyOnWriteArraySet = new CopyOnWriteArraySet();
}
// Creates a set containing all of the elements
// of the specified collection
public GFG(Collection extends E> c)
{
copyOnWriteArraySet = new CopyOnWriteArraySet(c);
}
// Method
// To add the specified element into list
// if not already present
public boolean add(E eobj)
{
return copyOnWriteArraySet.add(eobj);
}
// Method
// Returning true if there is a specified element
// present in the list
public boolean contains(Object obj)
{
return copyOnWriteArraySet.contains(obj);
}
// Method
// Returning true if the set is empty
public boolean isEmpty()
{
return copyOnWriteArraySet.isEmpty();
}
// Method
// To traverse over the elements
// present in the set
public Iterator iterator()
{
return copyOnWriteArraySet.iterator();
}
// Method
// To remove the secified element
// present in the Set
public boolean remove(Object obj)
{
return copyOnWriteArraySet.remove(obj);
}
// Method
// Returning the number of elements
// present in the set
public int size() { return copyOnWriteArraySet.size(); }
// Method
// Removing all elements from the given set
public void clear() { copyOnWriteArraySet.clear(); }
// Method
// Returning an array containing all of the elements
// present in this set
public Object[] toArray()
{
return copyOnWriteArraySet.toArray();
}
// Method
// Now, adding all of the elements in the specified
// collection to this set if they're not already present
public boolean addAll(Collection extends E> c)
throws UnsupportedOperationException,
ClassCastException, NullPointerException,
IllegalArgumentException
{
return copyOnWriteArraySet.addAll(c);
}
// Method
// Returns only the elements in this set that are
// contained in the specified collection
public boolean retainAll(Collection> c)
throws UnsupportedOperationException,
ClassCastException, NullPointerException
{
return copyOnWriteArraySet.retainAll(c);
}
// Method
// Removes from this set the elements that are contained
// in the specified collection
public boolean removeAll(Collection> c)
throws UnsupportedOperationException,
NullPointerException, ClassCastException
{
return copyOnWriteArraySet.retainAll(c);
}
// Returns an array containing all of the elements in
// this set.
public T[] toArray(T[] a)
throws ArrayStoreException, NullPointerException
{
return copyOnWriteArraySet.toArray(a);
}
// Method
// Main driver Method
public static void main(String args[])
{
// Creating an object of above class (GFG class)
// Declaring object of integer type
GFG copyOnWriteArraySet
= new GFG();
// Adding custom input elements after condition
// check
// Custom input elements are added
// using the add() method
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");
// Print and display the current size of Set
System.out.println(
"The size of copyOnWriteArraySet is "
+ copyOnWriteArraySet.size());
// Checking whrtjer the Set contains element
// using the contains() method
if (copyOnWriteArraySet.contains(14))
System.out.println(
"The copyOnWriteArraySet contains 14");
else
System.out.println(
"The copyOnWriteArraySet does not contain 14");
// Removing element from the Set
// using remove() method
if (copyOnWriteArraySet.remove(13))
// Print desired element is removed
System.out.println("Element 13 removed");
else
// Print desired element is not removed
System.out.println("Element 13 not removed");
// Now, print and display the elements
System.out.println(
"The element of copyOnWriteArraySet are");
Iterator iterator
= copyOnWriteArraySet.iterator();
// Condition holds true til there is
// single element remaining
while (iterator.hasNext()) {
// Print and display all elements size
System.out.print(iterator.next() + "\t");
}
// Appendind a new line for better readability
System.out.println();
// Creating an object of Set class of integer type
Set removedSet = new HashSet();
// Custom input entries to above Set
removedSet.add(12);
removedSet.add(13);
// Display message only
System.out.println("The elements after removing");
// removeAll() method wipes off all elements
// that was present in Set object
copyOnWriteArraySet.removeAll(removedSet);
// Iterator to traverse the elements
Iterator riterator
= copyOnWriteArraySet.iterator();
// Again condition holds true till there is
// single elemennt remaining in the List
while (riterator.hasNext()) {
// Printing the elements in the object
// using the next() method
System.out.print(riterator.next() + "\t");
}
// New line
System.out.println();
// Removing all elements from the Set using clear()
// method
copyOnWriteArraySet.clear();
// Display message to showcase all elements are
// removed
System.out.println(
"copyOnWriteArraySet Elements are completely removed");
// Lastly, verifying whether the Set is empty or not
if (copyOnWriteArraySet.isEmpty())
// Print statement if no elements in Set
System.out.println(
"copyOnWriteArraySet is empty");
else
// Print statement if elements found in Set
System.out.println(
"copyOnWriteArraySet is not empty");
}
}
输出:
Element 12 added to Set
Element 13 added to Set
Element 14 added to Set
Element 15 added to Set
The size of copyOnWriteArraySet is 4
The copyOnWriteArraySet contains 14
Element 13 removed
The element of copyOnWriteArraySet are
12 14 15
The elements after removing
12
copyOnWriteArraySet Elements are completely removed
copyOnWriteArraySet is empty