Top Description Fields Constructors Methods
org.apache.commons.collections4.collection

public Class SynchronizedCollection<E>

extends Object
implements Collection<E>, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.util.Collection, java.lang.Iterable
Known Direct Subclasses
org.apache.commons.collections4.multiset.SynchronizedMultiSet, org.apache.commons.collections4.multiset.SynchronizedMultiSet.SynchronizedSet, org.apache.commons.collections4.queue.SynchronizedQueue, org.apache.commons.collections4.bag.SynchronizedBag, org.apache.commons.collections4.bag.SynchronizedBag.SynchronizedBagSet
Type Parameters
<E>
the type of the elements in the collection
Imports
java.io.Serializable, java.util.Collection, .Iterator, java.util.function.Predicate

Decorates another Collection to synchronize its behaviour for a multi-threaded environment.

Iterators must be manually synchronized:

synchronized (coll) {
  Iterator it = coll.iterator();
  // do stuff with iterator
}

This class is Serializable from Commons Collections 3.1.

Since
3.0

Field Summary

Modifier and TypeField and Description
private final Collection<E>
collection

The collection to decorate

protected final Object
lock

The object to lock on, needed for List/SortedSet views

private static final long
serialVersionUID

Serialization version

Constructor Summary

AccessConstructor and Description
protected
SynchronizedCollection(final Collection<E>
the collection to decorate, must not be null
collection
)

Constructor that wraps (not copies).

protected
SynchronizedCollection(final Collection<E>
the collection to decorate, must not be null
collection
,
final Object
the lock object to use, must not be null
lock
)

Constructor that wraps (not copies).

Method Summary

Modifier and TypeMethod and Description
public boolean
add(final E
element whose presence in this collection is to be ensured
object
)

Implements java.util.Collection.add.

Ensures that this collection contains the specified element (optional operation).
public boolean
addAll(final Collection<? extends E>
collection containing elements to be added to this collection
coll
)

Implements java.util.Collection.addAll.

Adds all of the elements in the specified collection to this collection (optional operation).
public void
clear()

Implements java.util.Collection.clear.

Removes all of the elements from this collection (optional operation).
public boolean
contains(final Object
element whose presence in this collection is to be tested
object
)

Implements java.util.Collection.contains.

Returns true if this collection contains the specified element.
public boolean
containsAll(final Collection<?>
collection to be checked for containment in this collection
coll
)

Implements java.util.Collection.containsAll.

Returns true if this collection contains all of the elements in the specified collection.
protected Collection<E>

Returns:

the decorated collection
decorated
()

Gets the collection being decorated.

public boolean
equals(final Object
object to be compared for equality with this collection
object
)

Overrides java.lang.Object.equals.

Implements java.util.Collection.equals.

Compares the specified object with this collection for equality.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Implements java.util.Collection.hashCode.

Returns the hash code value for this collection.
public boolean
isEmpty()

Implements java.util.Collection.isEmpty.

Returns true if this collection contains no elements.
public Iterator<E>

Returns:

an iterator that must be manually synchronized on the collection
iterator
()

Implements java.util.Collection.iterator.

Iterators must be manually synchronized.
public boolean
remove(final Object
element to be removed from this collection, if present
object
)

Implements java.util.Collection.remove.

Removes a single instance of the specified element from this collection, if it is present (optional operation).
public boolean
removeAll(final Collection<?>
collection containing elements to be removed from this collection
coll
)

Implements java.util.Collection.removeAll.

Removes all of this collection's elements that are also contained in the specified collection (optional operation).
public boolean
removeIf(final Predicate<? super E>
a predicate which returns true for elements to be removed
filter
)

Overrides default java.util.Collection.removeIf.

Removes all of the elements of this collection that satisfy the given predicate.
public boolean
retainAll(final Collection<?>
collection containing elements to be retained in this collection
coll
)

Implements java.util.Collection.retainAll.

Retains only the elements in this collection that are contained in the specified collection (optional operation).
public int
size()

Implements java.util.Collection.size.

Returns the number of elements in this collection.
public static <
the type of the elements in the collection
T
>
SynchronizedCollection<T>

Returns:

a new synchronized collection
synchronizedCollection
(final Collection<T>
the collection to decorate, must not be null
coll
)

Factory method to create a synchronized collection.

public Object[]
toArray()

Implements java.util.Collection.toArray.

Returns an array containing all of the elements in this collection.
public <T> T[]
toArray(final T[]
the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.
object
)

Implements java.util.Collection.toArray.

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

collectionback to summary
private final Collection<E> collection

The collection to decorate

lockback to summary
protected final Object lock

The object to lock on, needed for List/SortedSet views

serialVersionUIDback to summary
private static final long serialVersionUID

Serialization version

Constructor Detail

SynchronizedCollectionback to summary
protected SynchronizedCollection(final Collection<E> collection)

Constructor that wraps (not copies).

Parameters
collection:Collection<E>

the collection to decorate, must not be null

Exceptions
NullPointerException:
if the collection is null
SynchronizedCollectionback to summary
protected SynchronizedCollection(final Collection<E> collection, final Object lock)

Constructor that wraps (not copies).

Parameters
collection:Collection<E>

the collection to decorate, must not be null

lock:Object

the lock object to use, must not be null

Exceptions
NullPointerException:
if the collection or lock is null

Method Detail

addback to summary
public boolean add(final E object)

Implements java.util.Collection.add.

Doc from java.util.Collection.add.

Ensures that this collection contains the specified element (optional operation). Returns true if this collection changed as a result of the call. (Returns false if this collection does not permit duplicates and already contains the specified element.)

Collections that support this operation may place limitations on what elements may be added to this collection. In particular, some collections will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. Collection classes should clearly specify in their documentation any restrictions on what elements may be added.

If a collection refuses to add a particular element for any reason other than that it already contains the element, it must throw an exception (rather than returning false). This preserves the invariant that a collection always contains the specified element after this call returns.

Parameters
object:E

element whose presence in this collection is to be ensured

Returns:boolean

true if this collection changed as a result of the call

Annotations
@Override
addAllback to summary
public boolean addAll(final Collection<? extends E> coll)

Implements java.util.Collection.addAll.

Doc from java.util.Collection.addAll.

Adds all of the elements in the specified collection to this collection (optional operation). The behavior of this operation is undefined if the specified collection is modified while the operation is in progress. (This implies that the behavior of this call is undefined if the specified collection is this collection, and this collection is nonempty.) If the specified collection has a defined encounter order, processing of its elements generally occurs in that order.

Parameters
coll:Collection<? extends E>

collection containing elements to be added to this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@Override
clearback to summary
public void clear()

Implements java.util.Collection.clear.

Doc from java.util.Collection.clear.

Removes all of the elements from this collection (optional operation). The collection will be empty after this method returns.

Annotations
@Override
containsback to summary
public boolean contains(final Object object)

Implements java.util.Collection.contains.

Doc from java.util.Collection.contains.

Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that Objects.equals(o, e).

Parameters
object:Object

element whose presence in this collection is to be tested

Returns:boolean

true if this collection contains the specified element

Annotations
@Override
containsAllback to summary
public boolean containsAll(final Collection<?> coll)

Implements java.util.Collection.containsAll.

Doc from java.util.Collection.containsAll.

Returns true if this collection contains all of the elements in the specified collection.

Parameters
coll:Collection<?>

collection to be checked for containment in this collection

Returns:boolean

true if this collection contains all of the elements in the specified collection

Annotations
@Override
decoratedback to summary
protected Collection<E> decorated()

Gets the collection being decorated.

Returns:Collection<E>

the decorated collection

equalsback to summary
public boolean equals(final Object object)

Overrides java.lang.Object.equals.

Implements java.util.Collection.equals.

Doc from java.util.Collection.equals.

Compares the specified object with this collection for equality.

While the Collection interface adds no stipulations to the general contract for the Object.equals, programmers who implement the Collection interface "directly" (in other words, create a class that is a Collection but is not a Set or a List) must exercise care if they choose to override the Object.equals. It is not necessary to do so, and the simplest course of action is to rely on Object's implementation, but the implementor may wish to implement a "value comparison" in place of the default "reference comparison." (The List and Set interfaces mandate such value comparisons.)

The general contract for the Object.equals method states that equals must be symmetric (in other words, a.equals(b) if and only if b.equals(a)). The contracts for List.equals and Set.equals state that lists are only equal to other lists, and sets to other sets. Thus, a custom equals method for a collection class that implements neither the List nor Set interface must return false when this collection is compared to any list or set. (By the same logic, it is not possible to write a class that correctly implements both the Set and List interfaces.)

Parameters
object:Object

object to be compared for equality with this collection

Returns:boolean

true if the specified object is equal to this collection

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Implements java.util.Collection.hashCode.

Doc from java.util.Collection.hashCode.

Returns the hash code value for this collection. While the Collection interface adds no stipulations to the general contract for the Object.hashCode method, programmers should take note that any class that overrides the Object.equals method must also override the Object.hashCode method in order to satisfy the general contract for the Object.hashCode method. In particular, c1.equals(c2) implies that c1.hashCode()==c2.hashCode().

Returns:int

the hash code value for this collection

Annotations
@Override
isEmptyback to summary
public boolean isEmpty()

Implements java.util.Collection.isEmpty.

Doc from java.util.Collection.isEmpty.

Returns true if this collection contains no elements.

Returns:boolean

true if this collection contains no elements

Annotations
@Override
iteratorback to summary
public Iterator<E> iterator()

Implements java.util.Collection.iterator.

Iterators must be manually synchronized.

synchronized (coll) {
  Iterator it = coll.iterator();
  // do stuff with iterator
}
Returns:Iterator<E>

an iterator that must be manually synchronized on the collection

Annotations
@Override
removeback to summary
public boolean remove(final Object object)

Implements java.util.Collection.remove.

Doc from java.util.Collection.remove.

Removes a single instance of the specified element from this collection, if it is present (optional operation). More formally, removes an element e such that Objects.equals(o, e), if this collection contains one or more such elements. Returns true if this collection contained the specified element (or equivalently, if this collection changed as a result of the call).

Parameters
object:Object

element to be removed from this collection, if present

Returns:boolean

true if an element was removed as a result of this call

Annotations
@Override
removeAllback to summary
public boolean removeAll(final Collection<?> coll)

Implements java.util.Collection.removeAll.

Doc from java.util.Collection.removeAll.

Removes all of this collection's elements that are also contained in the specified collection (optional operation). After this call returns, this collection will contain no elements in common with the specified collection.

Parameters
coll:Collection<?>

collection containing elements to be removed from this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@Override
removeIfback to summary
public boolean removeIf(final Predicate<? super E> filter)

Overrides default java.util.Collection.removeIf.

Doc from java.util.Collection.removeIf.

Removes all of the elements of this collection that satisfy the given predicate. Errors or runtime exceptions thrown during iteration or by the predicate are relayed to the caller.

Parameters
filter:Predicate<? super E>

a predicate which returns true for elements to be removed

Returns:boolean

true if any elements were removed

Annotations
@Override
Since
4.4
retainAllback to summary
public boolean retainAll(final Collection<?> coll)

Implements java.util.Collection.retainAll.

Doc from java.util.Collection.retainAll.

Retains only the elements in this collection that are contained in the specified collection (optional operation). In other words, removes from this collection all of its elements that are not contained in the specified collection.

Parameters
coll:Collection<?>

collection containing elements to be retained in this collection

Returns:boolean

true if this collection changed as a result of the call

Annotations
@Override
sizeback to summary
public int size()

Implements java.util.Collection.size.

Doc from java.util.Collection.size.

Returns the number of elements in this collection. If this collection contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

Returns:int

the number of elements in this collection

Annotations
@Override
synchronizedCollectionback to summary
public static <T> SynchronizedCollection<T> synchronizedCollection(final Collection<T> coll)

Factory method to create a synchronized collection.

Parameters
<T>
the type of the elements in the collection
coll:Collection<T>

the collection to decorate, must not be null

Returns:SynchronizedCollection<T>

a new synchronized collection

Exceptions
NullPointerException:
if collection is null
Since
4.0
toArrayback to summary
public Object[] toArray()

Implements java.util.Collection.toArray.

Doc from java.util.Collection.toArray.

Returns an array containing all of the elements in this collection. If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order. The returned array's runtime component type is Object.

The returned array will be "safe" in that no references to it are maintained by this collection. (In other words, this method must allocate a new array even if this collection is backed by an array). The caller is thus free to modify the returned array.

Returns:Object[]

an array, whose runtime component type is Object, containing all of the elements in this collection

Annotations
@Override
toArrayback to summary
public <T> T[] toArray(final T[] object)

Implements java.util.Collection.toArray.

Doc from java.util.Collection.toArray.

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. If the collection fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this collection.

If this collection fits in the specified array with room to spare (i.e., the array has more elements than this collection), the element in the array immediately following the end of the collection is set to null. (This is useful in determining the length of this collection only if the caller knows that this collection does not contain any null elements.)

If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order.

Parameters
<T>
the component type of the array to contain the collection
object:T[]

the array into which the elements of this collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.

Returns:T[]

an array containing all of the elements in this collection

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override