Write a method that takes an enumeration as input and return an Iterable as output.
Signature
public static <T> Iterable<T> toIterable(final Enumeration<T> enumeration)
Find the below working application.
EnumerationToIterable.java
package com.sample.app.collections;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class EnumerationToIterable {
/**
* Convert an {@link Enumeration} to an {@link Iterable}
*
* @param <T>
* @param enumeration
* @return empty list, if the enumeration is null, else return an iterable that
* is used to traverse the elements of enumeraiton.
*/
public static <T> Iterable<T> toIterable(final Enumeration<T> enumeration) {
if (enumeration == null) {
return Collections.emptyList();
}
final Iterable<T> iterable = () -> new Iterator<T>() {
@Override
public boolean hasNext() {
return enumeration.hasMoreElements();
}
@Override
public T next() {
return enumeration.nextElement();
}
};
return iterable;
}
public static void main(String[] args) {
final Vector<Integer> primesVector = new Vector<>();
primesVector.addAll(Arrays.asList(2, 3, 5, 7, 11));
final Enumeration<Integer> primesEnumeration = primesVector.elements();
Iterable<Integer> iterable = toIterable(primesEnumeration);
for (int i : iterable) {
System.out.println(i);
}
}
}
Output
2 3 5 7 11
You may like
How to check the object is an iterable or not?
How to check the type or object is a map or not?
No comments:
Post a Comment