/** * Gets the decorated set. * * @return the decorated set */ protected SortedSet<E> getSortedSet() { return (SortedSet<E>) decorated(); }
/** * Gets the decorated navigable set. * * @return the decorated navigable set */ @Override protected NavigableSet<E> decorated() { return (NavigableSet<E>) super.decorated(); }
/** * Factory method to create a transforming sorted set that will transform * existing contents of the specified sorted set. * <p> * If there are any elements already in the set being decorated, they * will be transformed by this method. * Contrast this with {@link #transformingSortedSet(SortedSet, Transformer)}. * * @param <E> the element type * @param set the set to decorate, must not be null * @param transformer the transformer to use for conversion, must not be null * @return a new transformed {@link SortedSet} * @throws NullPointerException if set or transformer is null * @since 4.0 */ public static <E> TransformedSortedSet<E> transformedSortedSet(final SortedSet<E> set, final Transformer<? super E, ? extends E> transformer) { final TransformedSortedSet<E> decorated = new TransformedSortedSet<>(set, transformer); if (set.size() > 0) { @SuppressWarnings("unchecked") // set is type E final E[] values = (E[]) set.toArray(); // NOPMD - false positive for generics set.clear(); for (final E value : values) { decorated.decorated().add(transformer.transform(value)); } } return decorated; }