Decorate a List
using PredicatedList
. The following example demonstrates the use of PredicatedList
to create a List
that only accepts even Integer
objects:
import java.util.*; import org.apache.commons.collections.list.PredicatedList; import org.apache.commons.collections.Predicate; import org.apache.commons.lang.ArrayUtils; // Create a Predicate that only accepts even Integer objects Predicate onlyEven = new Predicate( ) { public boolean evaluate(Object object) { Integer integer = (Integer) object; return( integer.intValue( ) % 2 == 0 ); } } List list = PredicatedList.decorate( new ArrayList( ), onlyEven ); list.add( new Integer(1) ); // Will throw IllegalArgumentException list.add( new Integer(2) ); list.add( new Integer(3) ); // Will throw IllegalArgumentException list.add( new Integer(4) );
In this example, attempting to add an Integer
with an odd value causes an IllegalArgumentException
, but adding an even
number does not cause an exception to be thrown.
A PredicatedList
is very
similar to a PredicatedMap
; this
decorator works with an existing List
and adds inbound validation to a List
. There is no limit to the complexity of
the Predicate
that can be used to
provide inbound validation to a List
.
PredicatedList
and PredicatedMap
are not the only Collection
decorators available in the Commons
Collections. Any Collection
interface
in the following list can be decorated with a Predicate
.
PredicatedBag
decorates a
Bag
.
PredicatedBuffer
decorates
a Buffer
.
PredicatedCollection
decorates a Collection
.
PredicatedList
decorates a
List
.
PredicatedMap
decorates a
Map
.
PredicatedSet
decorates a
Set
.
PredicatedSortedBag
decorates a SortedBag
.
PredicatedSortedMap
decorates a SortedMap
.
PredicatedSortedSet
decorates a SortedSet
For more information about these utilities, see the Commons Collections project page at http://commons.apache.org/collections.