# Class TransformedCollection<E>

java.lang.Object
org.apache.commons.collections4.collection.AbstractCollectionDecorator<E>
org.apache.commons.collections4.collection.TransformedCollection<E>

Type Parameters:
  `E` - the type of the elements in the collection

All Implemented Interfaces:
  `Serializable`, `Iterable<E>`, `Collection<E>`

Direct Known Subclasses:
  `TransformedBag`, `TransformedList`, `TransformedQueue`, `TransformedSet`

public class TransformedCollection<E> extends AbstractCollectionDecorator<E>
Decorates another `Collection` to transform objects that are added.

The add methods are affected by this class. Thus objects must be removed or searched for using their transformed form. For example, if the transformation converts Strings to Integers, you must use the Integer form to remove objects.

This class is Serializable from Commons Collections 3.1.

Since:
  3.0
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Transformer<? super E,? extends E>`
  `transformer`
  The transformer to use

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `TransformedCollection(Collection<E> collection, Transformer<? super E,? extends E> transformer)`
  Constructor that wraps (not copies).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `add(E object)`
  `boolean`
  `addAll(Collection<? extends E> coll)`
  `protected E`
  `transform(E object)`
  Transforms an object.
  `protected Collection<E>`
  `transform(Collection<? extends E> coll)`
  Transforms a collection.
  `static <E> TransformedCollection<E>`
  `transformedCollection(Collection<E> collection, Transformer<? super E,? extends E> transformer)`
  Factory method to create a transforming collection that will transform existing contents of the specified collection.
  `static <E> TransformedCollection<E>`
  `transformingCollection(Collection<E> coll, Transformer<? super E,? extends E> transformer)`
  Factory method to create a transforming collection.

  ### Methods inherited from class org.apache.commons.collections4.collection.AbstractCollectionDecorator

  `clear, contains, containsAll, decorated, isEmpty, iterator, remove, removeAll, removeIf, retainAll, setCollection, size, toArray, toArray, 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, parallelStream, spliterator, stream`

  ### Methods inherited from interface java.lang.Iterable

  `forEach`

- ## Field Details

  - ### transformer

    protected final Transformer<? super E,? extends E> transformer
    The transformer to use

- ## Constructor Details

  - ### TransformedCollection

    protected TransformedCollection(Collection<E> collection, Transformer<? super E,? extends E> transformer)
    Constructor that wraps (not copies).

    If there are any elements already in the collection being decorated, they are NOT transformed.

    Parameters:
      `collection` - the collection to decorate, must not be null
      `transformer` - the transformer to use for conversion, must not be null
    Throws:
      `NullPointerException` - if collection or transformer is null

- ## Method Details

  - ### transformedCollection

    public static <E> TransformedCollection<E> transformedCollection(Collection<E> collection, Transformer<? super E,? extends E> transformer)
    Factory method to create a transforming collection that will transform existing contents of the specified collection.

    If there are any elements already in the collection being decorated, they will be transformed by this method. Contrast this with `transformingCollection(Collection, Transformer)`.

    Type Parameters:
      `E` - the type of the elements in the collection
    Parameters:
      `collection` - the collection to decorate, must not be null
      `transformer` - the transformer to use for conversion, must not be null
    Returns:
      a new transformed Collection
    Throws:
      `NullPointerException` - if collection or transformer is null
    Since:
      4.0

  - ### transformingCollection

    public static <E> TransformedCollection<E> transformingCollection(Collection<E> coll, Transformer<? super E,? extends E> transformer)
    Factory method to create a transforming collection.

    If there are any elements already in the collection being decorated, they are NOT transformed. Contrast this with `transformedCollection(Collection, Transformer)`.

    Type Parameters:
      `E` - the type of the elements in the collection
    Parameters:
      `coll` - the collection to decorate, must not be null
      `transformer` - the transformer to use for conversion, must not be null
    Returns:
      a new transformed collection
    Throws:
      `NullPointerException` - if collection or transformer is null
    Since:
      4.0

  - ### add

    public boolean add(E object)
    Specified by:
      `add` in interface `Collection<E>`
    Overrides:
      `add` in class `AbstractCollectionDecorator<E>`

  - ### addAll

    public boolean addAll(Collection<? extends E> coll)
    Specified by:
      `addAll` in interface `Collection<E>`
    Overrides:
      `addAll` in class `AbstractCollectionDecorator<E>`

  - ### transform

    protected Collection<E> transform(Collection<? extends E> coll)
    Transforms a collection.

    The transformer itself may throw an exception if necessary.

    Parameters:
      `coll` - the collection to transform
    Returns:
      a transformed object

  - ### transform

    protected E transform(E object)
    Transforms an object.

    The transformer itself may throw an exception if necessary.

    Parameters:
      `object` - the object to transform
    Returns:
      a transformed object