Author: tn Date: Fri May 29 10:59:39 2015 New Revision: 1682416 URL: http://svn.apache.org/r1682416 Log: Rename SetUtils.identityHashSet to SetUtils.newIdentityHashSet to better reflect that it returns a new instance.
Modified: commons/proper/collections/trunk/src/changes/changes.xml commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/SetUtils.java commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/SetUtilsTest.java Modified: commons/proper/collections/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/changes/changes.xml?rev=1682416&r1=1682415&r2=1682416&view=diff ============================================================================== --- commons/proper/collections/trunk/src/changes/changes.xml (original) +++ commons/proper/collections/trunk/src/changes/changes.xml Fri May 29 10:59:39 2015 @@ -34,7 +34,7 @@ Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)". </action> <action issue="COLLECTIONS-556" dev="tn" type="add"> - Added method "SetUtils#identityHashSet()" which returns a new identity HashSet + Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet using reference-equality instead of object-equality. </action> <action issue="COLLECTIONS-562" dev="tn" type="update"> Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/SetUtils.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/SetUtils.java?rev=1682416&r1=1682415&r2=1682416&view=diff ============================================================================== --- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/SetUtils.java (original) +++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/SetUtils.java Fri May 29 10:59:39 2015 @@ -19,15 +19,19 @@ package org.apache.commons.collections4; import java.util.Collection; import java.util.Collections; import java.util.IdentityHashMap; +import java.util.NavigableSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.apache.commons.collections4.set.ListOrderedSet; +import org.apache.commons.collections4.set.PredicatedNavigableSet; import org.apache.commons.collections4.set.PredicatedSet; import org.apache.commons.collections4.set.PredicatedSortedSet; +import org.apache.commons.collections4.set.TransformedNavigableSet; import org.apache.commons.collections4.set.TransformedSet; import org.apache.commons.collections4.set.TransformedSortedSet; +import org.apache.commons.collections4.set.UnmodifiableNavigableSet; import org.apache.commons.collections4.set.UnmodifiableSet; import org.apache.commons.collections4.set.UnmodifiableSortedSet; @@ -171,10 +175,11 @@ public class SetUtils { * @return a new identity hash set * @since 4.1 */ - public static <E> Set<E> identityHashSet() { + public static <E> Set<E> newIdentityHashSet() { return Collections.newSetFromMap(new IdentityHashMap<E, Boolean>()); } + // Set //----------------------------------------------------------------------- /** * Returns a synchronized set backed by the given set. @@ -271,6 +276,7 @@ public class SetUtils { return ListOrderedSet.listOrderedSet(set); } + // SortedSet //----------------------------------------------------------------------- /** * Returns a synchronized sorted set backed by the given sorted set. @@ -352,4 +358,62 @@ public class SetUtils { return TransformedSortedSet.transformingSortedSet(set, transformer); } + // NavigableSet + //----------------------------------------------------------------------- + /** + * Returns an unmodifiable navigable set backed by the given navigable set. + * <p> + * This method uses the implementation in the decorators subpackage. + * + * @param <E> the element type + * @param set the navigable set to make unmodifiable, must not be null + * @return an unmodifiable set backed by the given set + * @throws IllegalArgumentException if the set is null + * @since 4.1 + */ + public static <E> SortedSet<E> unmodifiableNavigableSet(final NavigableSet<E> set) { + return UnmodifiableNavigableSet.unmodifiableNavigableSet(set); + } + + /** + * Returns a predicated (validating) navigable set backed by the given navigable set. + * <p> + * Only objects that pass the test in the given predicate can be added to the set. + * Trying to add an invalid object results in an IllegalArgumentException. + * It is important not to use the original set after invoking this method, + * as it is a backdoor for adding invalid objects. + * + * @param <E> the element type + * @param set the navigable set to predicate, must not be null + * @param predicate the predicate for the navigable set, must not be null + * @return a predicated navigable set backed by the given navigable set + * @throws IllegalArgumentException if the Set or Predicate is null + * @since 4.1 + */ + public static <E> SortedSet<E> predicatedNavigableSet(final NavigableSet<E> set, final Predicate<? super E> predicate) { + return PredicatedNavigableSet.predicatedNavigableSet(set, predicate); + } + + /** + * 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 IllegalArgumentException 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); + } + } Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/SetUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/SetUtilsTest.java?rev=1682416&r1=1682415&r2=1682416&view=diff ============================================================================== --- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/SetUtilsTest.java (original) +++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/SetUtilsTest.java Fri May 29 10:59:39 2015 @@ -102,8 +102,8 @@ public class SetUtilsTest extends BulkTe assertEquals(0, SetUtils.hashCodeForSet(null)); } - public void testIdentityHashSet() { - Set<String> set = SetUtils.identityHashSet(); + public void testNewIdentityHashSet() { + Set<String> set = SetUtils.newIdentityHashSet(); String a = new String("a"); set.add(a); set.add(new String("b"));