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.
