Skip to content

Commit 3e22618

Browse files
committed
Add EnumerationUtils.toSet(Enumeration)
1 parent ed0030f commit 3e22618

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

src/changes/changes.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<!-- ADD -->
3030
<action type="add" dev="ggregory" due-to="Gary Gregory">Add IteratorUtils.toSet(Iterator).</action>
3131
<action type="add" dev="ggregory" due-to="Gary Gregory">Add IteratorUtils.toSet(Iterator, int).</action>
32+
<action type="add" dev="ggregory" due-to="Gary Gregory">Add EnumerationUtils.toSet(Enumeration).</action>
3233
<!-- UPDATE -->
3334
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-codec:commons-codec from 1.17.1 to 1.18.0 #591.</action>
3435
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 78 to 81 #2296.</action>

src/main/java/org/apache/commons/collections4/EnumerationUtils.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.ArrayList;
2020
import java.util.Enumeration;
2121
import java.util.List;
22+
import java.util.Set;
2223
import java.util.StringTokenizer;
2324

2425
import org.apache.commons.collections4.iterators.EnumerationIterator;
@@ -103,6 +104,22 @@ public static List<String> toList(final StringTokenizer stringTokenizer) {
103104
return result;
104105
}
105106

107+
/**
108+
* Creates a set based on an enumeration.
109+
*
110+
* <p>As the enumeration is traversed, an HashSet of its values is
111+
* created. The new set is returned.</p>
112+
*
113+
* @param <E> the element type
114+
* @param enumeration the enumeration to traverse, which should not be {@code null}.
115+
* @return a set containing all elements of the given enumeration.
116+
* @throws NullPointerException if the enumeration parameter is {@code null}.
117+
* @since 4.5.0-M4
118+
*/
119+
public static <E> Set<E> toSet(final Enumeration<? extends E> enumeration) {
120+
return IteratorUtils.toSet(new EnumerationIterator<>(enumeration));
121+
}
122+
106123
/**
107124
* Don't allow instances.
108125
*/

src/test/java/org/apache/commons/collections4/EnumerationUtilsTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323

2424
import java.util.ArrayList;
2525
import java.util.Enumeration;
26+
import java.util.HashSet;
2627
import java.util.Hashtable;
2728
import java.util.Iterator;
2829
import java.util.List;
30+
import java.util.Set;
2931
import java.util.StringTokenizer;
3032
import java.util.Vector;
3133

@@ -124,4 +126,35 @@ public void testToListWithStringTokenizer() {
124126
assertEquals(expectedList2, actualList);
125127
}
126128

129+
@Test
130+
public void testToSetWithHashtable() {
131+
final Hashtable<String, Integer> expected = new Hashtable<>();
132+
expected.put("one", Integer.valueOf(1));
133+
expected.put("two", Integer.valueOf(2));
134+
expected.put("three", Integer.valueOf(3));
135+
// validate elements.
136+
final Set<Integer> actualEltSet = EnumerationUtils.toSet(expected.elements());
137+
assertEquals(expected.size(), actualEltSet.size());
138+
assertTrue(actualEltSet.contains(Integer.valueOf(1)));
139+
assertTrue(actualEltSet.contains(Integer.valueOf(2)));
140+
assertTrue(actualEltSet.contains(Integer.valueOf(3)));
141+
final Set<Integer> expectedEltList = new HashSet<>();
142+
expectedEltList.add(Integer.valueOf(1));
143+
expectedEltList.add(Integer.valueOf(2));
144+
expectedEltList.add(Integer.valueOf(3));
145+
assertTrue(actualEltSet.containsAll(expectedEltList));
146+
147+
// validate keys.
148+
final Set<String> actualKeySet = EnumerationUtils.toSet(expected.keys());
149+
assertEquals(expected.size(), actualEltSet.size());
150+
assertTrue(actualKeySet.contains("one"));
151+
assertTrue(actualKeySet.contains("two"));
152+
assertTrue(actualKeySet.contains("three"));
153+
final Set<String> expectedKeySet = new HashSet<>();
154+
expectedKeySet.add("one");
155+
expectedKeySet.add("two");
156+
expectedKeySet.add("three");
157+
assertTrue(actualKeySet.containsAll(expectedKeySet));
158+
}
159+
127160
}

0 commit comments

Comments
 (0)