org.apache.aries.blueprint.utils
Class DynamicCollection<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by org.apache.aries.blueprint.utils.DynamicCollection<E>
All Implemented Interfaces:
Iterable<E>, Collection<E>

public class DynamicCollection<E>
extends AbstractCollection<E>

Collection that allows iterators to see addition or removals of elements while iterating. This collection and its iterators are thread safe but all operations happen under a synchronization lock, so the performance in heavy concurrency load is far from optimal. If such a use is needed, a CopyOnWriteArrayList may be more suited.

Version:
$Rev: 896324 $, $Date: 2010-01-06 06:05:04 +0000 (Wed, 06 Jan 2010) $

Nested Class Summary
 class DynamicCollection.DynamicIterator
           
 
Field Summary
protected  List<WeakReference<DynamicCollection.DynamicIterator>> iterators
           
protected  Object lock
           
protected  List<E> storage
           
 
Constructor Summary
DynamicCollection()
           
 
Method Summary
 boolean add(E o)
           
 void clear()
           
 boolean contains(Object o)
           
 boolean containsAll(Collection<?> c)
           
protected  DynamicCollection.DynamicIterator createIterator(int index)
           
 E first()
           
 E get(int index)
           
 boolean isEmpty()
           
 DynamicCollection.DynamicIterator iterator()
           
 DynamicCollection.DynamicIterator iterator(int index)
           
 E last()
           
 E remove(int index)
           
 boolean remove(Object o)
           
 int size()
           
 Object[] toArray()
           
<T> T[]
toArray(T[] a)
           
 
Methods inherited from class java.util.AbstractCollection
addAll, removeAll, retainAll, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Field Detail

lock

protected final Object lock

storage

protected final List<E> storage

iterators

protected final List<WeakReference<DynamicCollection.DynamicIterator>> iterators
Constructor Detail

DynamicCollection

public DynamicCollection()
Method Detail

iterator

public DynamicCollection.DynamicIterator iterator()
Specified by:
iterator in interface Iterable<E>
Specified by:
iterator in interface Collection<E>
Specified by:
iterator in class AbstractCollection<E>

iterator

public DynamicCollection.DynamicIterator iterator(int index)

createIterator

protected DynamicCollection.DynamicIterator createIterator(int index)

size

public int size()
Specified by:
size in interface Collection<E>
Specified by:
size in class AbstractCollection<E>

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Collection<E>
Overrides:
isEmpty in class AbstractCollection<E>

contains

public boolean contains(Object o)
Specified by:
contains in interface Collection<E>
Overrides:
contains in class AbstractCollection<E>

toArray

public Object[] toArray()
Specified by:
toArray in interface Collection<E>
Overrides:
toArray in class AbstractCollection<E>

toArray

public <T> T[] toArray(T[] a)
Specified by:
toArray in interface Collection<E>
Overrides:
toArray in class AbstractCollection<E>

containsAll

public boolean containsAll(Collection<?> c)
Specified by:
containsAll in interface Collection<E>
Overrides:
containsAll in class AbstractCollection<E>

add

public boolean add(E o)
Specified by:
add in interface Collection<E>
Overrides:
add in class AbstractCollection<E>

remove

public boolean remove(Object o)
Specified by:
remove in interface Collection<E>
Overrides:
remove in class AbstractCollection<E>

get

public E get(int index)

clear

public void clear()
Specified by:
clear in interface Collection<E>
Overrides:
clear in class AbstractCollection<E>

remove

public E remove(int index)

first

public E first()

last

public E last()


Copyright © 2009-2012 The Apache Software Foundation. All Rights Reserved.