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:
java.lang.Iterable<E>, java.util.Collection<E>

public class DynamicCollection<E>
extends java.util.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  java.util.List<java.lang.ref.WeakReference<DynamicCollection.DynamicIterator>> iterators
           
protected  java.lang.Object lock
           
protected  java.util.List<E> storage
           
 
Constructor Summary
DynamicCollection()
           
 
Method Summary
 boolean add(E o)
           
 void clear()
           
 boolean contains(java.lang.Object o)
           
 boolean containsAll(java.util.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(java.lang.Object o)
           
 int size()
           
 java.lang.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 java.lang.Object lock

storage

protected final java.util.List<E> storage

iterators

protected final java.util.List<java.lang.ref.WeakReference<DynamicCollection.DynamicIterator>> iterators
Constructor Detail

DynamicCollection

public DynamicCollection()
Method Detail

iterator

public DynamicCollection.DynamicIterator iterator()
Specified by:
iterator in interface java.lang.Iterable<E>
Specified by:
iterator in interface java.util.Collection<E>
Specified by:
iterator in class java.util.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 java.util.Collection<E>
Specified by:
size in class java.util.AbstractCollection<E>

isEmpty

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

contains

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

toArray

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

toArray

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

containsAll

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

add

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

remove

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

get

public E get(int index)

clear

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

remove

public E remove(int index)

first

public E first()

last

public E last()


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