Java: use Enumeration multiple times

2019-01-28 07:48发布

问题:

I work with DefaultMutableTreeNode, and it has methods depthFirstEnumeration(), breadthFirstEnumeration() and children() that return Enumeration of tree nodes.

I need to use the returned Enumeration multiple times, but I can't find any method like reset() in Enumeration. It seems like I only can get all the elements just once, and then call depthFirstEnumeration() again to get new Enumeration, it seems not to be a good solution.

Of course, I can get all the elements from Enumeration and convert it to any another reusable representation, but is there really a way to use Enumeration multiple times?

回答1:

No that is not possible with Enumeration. On this subject, java doc says:

An object that implements the Enumeration interface generates a series of elements, one at a time.

Notice the one at a time which means that if you want to manipulate the Enumeration as a list then you will have to convert it. You can create a List when you first request the Enumeration. This way you could use and manipulate it however you wish.

Enumeration e = ...
ArrayList aList = Collections.list(e);