/** * Returns a transformed navigable set backed by the given navigable set. * <p> * Each object is passed through the transformer as it is added to the * Set. It is important not to use the original set after invoking this * method, as it is a backdoor for adding untransformed objects. * <p> * Existing entries in the specified set will not be transformed. * If you want that behaviour, see {@link TransformedNavigableSet#transformedNavigableSet}. * * @param <E> the element type * @param set the navigable set to transform, must not be null * @param transformer the transformer for the set, must not be null * @return a transformed set backed by the given set * @throws NullPointerException if the set or transformer is null * @since 4.1 */ public static <E> SortedSet<E> transformedNavigableSet(final NavigableSet<E> set, final Transformer<? super E, ? extends E> transformer) { return TransformedNavigableSet.transformingNavigableSet(set, transformer); }
@Override public NavigableSet<E> tailSet(final E fromElement, final boolean inclusive) { final NavigableSet<E> tail = decorated().tailSet(fromElement, inclusive); return transformingNavigableSet(tail, transformer); }
@Override public NavigableSet<E> subSet(final E fromElement, final boolean fromInclusive, final E toElement, final boolean toInclusive) { final NavigableSet<E> sub = decorated().subSet(fromElement, fromInclusive, toElement, toInclusive); return transformingNavigableSet(sub, transformer); }
@Override public NavigableSet<E> headSet(final E toElement, final boolean inclusive) { final NavigableSet<E> head = decorated().headSet(toElement, inclusive); return transformingNavigableSet(head, transformer); }
@Override public NavigableSet<E> descendingSet() { return transformingNavigableSet(decorated().descendingSet(), transformer); }