Class TransformingCollection<InternalV,​ExternalV>

  • All Implemented Interfaces:
    java.lang.Iterable<ExternalV>, java.util.Collection<ExternalV>
    Direct Known Subclasses:
    TransformingList, TransformingSet

    public class TransformingCollection<InternalV,​ExternalV>
    extends java.lang.Object
    implements java.util.Collection<ExternalV>
    A TransformingCollection applies "just in time" transformations to a Collection<InternalV> in order to make it like a Collection<ExternalV>.

    The transformations are applied "just in time", that is, the values are converted only when they are used, not during the construction of the TransformingCollection.

    See Also:
    TransformingMap
    • Field Detail

      • readTransformation

        protected final java.util.function.Function<? super InternalV,​? extends ExternalV> readTransformation
      • writeTransformation

        protected final java.util.function.Function<? super ExternalV,​? extends InternalV> writeTransformation
      • searchTransformation

        protected final java.util.function.Function<java.lang.Object,​java.lang.Object> searchTransformation
      • internalCollection

        protected final java.util.Collection<InternalV> internalCollection
    • Constructor Detail

      • TransformingCollection

        public TransformingCollection​(java.util.Collection<InternalV> internalCollection,
                                      java.util.function.Function<? super InternalV,​? extends ExternalV> readTransformation,
                                      java.util.function.Function<? super ExternalV,​? extends InternalV> writeTransformation,
                                      java.util.function.Function<java.lang.Object,​java.lang.Object> searchTransformation)
    • Method Detail

      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<InternalV>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<InternalV>
      • contains

        public boolean contains​(java.lang.Object o)
        Specified by:
        contains in interface java.util.Collection<InternalV>
      • iterator

        public java.util.Iterator<ExternalV> iterator()
        Specified by:
        iterator in interface java.util.Collection<InternalV>
        Specified by:
        iterator in interface java.lang.Iterable<InternalV>
      • toArray

        public java.lang.Object[] toArray()
        Specified by:
        toArray in interface java.util.Collection<InternalV>
      • toArray

        public <T> T[] toArray​(T[] a)
        Specified by:
        toArray in interface java.util.Collection<InternalV>
      • add

        public boolean add​(ExternalV value)
        Specified by:
        add in interface java.util.Collection<InternalV>
      • remove

        public boolean remove​(java.lang.Object o)
        Specified by:
        remove in interface java.util.Collection<InternalV>
      • containsAll

        public boolean containsAll​(java.util.Collection<?> c)
        Specified by:
        containsAll in interface java.util.Collection<InternalV>
      • addAll

        public boolean addAll​(java.util.Collection<? extends ExternalV> c)
        Specified by:
        addAll in interface java.util.Collection<InternalV>
      • removeAll

        public boolean removeAll​(java.util.Collection<?> c)
        Specified by:
        removeAll in interface java.util.Collection<InternalV>
      • removeIf

        public boolean removeIf​(java.util.function.Predicate<? super ExternalV> filter)
        Specified by:
        removeIf in interface java.util.Collection<InternalV>
      • retainAll

        public boolean retainAll​(java.util.Collection<?> c)
        Specified by:
        retainAll in interface java.util.Collection<InternalV>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<InternalV>
      • spliterator

        public java.util.Spliterator<ExternalV> spliterator()
        Specified by:
        spliterator in interface java.util.Collection<InternalV>
        Specified by:
        spliterator in interface java.lang.Iterable<InternalV>
      • stream

        public java.util.stream.Stream<ExternalV> stream()
        Specified by:
        stream in interface java.util.Collection<InternalV>
      • parallelStream

        public java.util.stream.Stream<ExternalV> parallelStream()
        Specified by:
        parallelStream in interface java.util.Collection<InternalV>
      • forEach

        public void forEach​(java.util.function.Consumer<? super ExternalV> action)
        Specified by:
        forEach in interface java.lang.Iterable<InternalV>
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface java.util.Collection<InternalV>
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface java.util.Collection<InternalV>
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object