java.util.Enumeration interface is one of the predefined interfaces, whose object is used for retrieving the data from collections framework variable( like Stack, Vector, HashTable etc.) in a forward direction only and not in the backward direction. This interface has been superceded by an iterator.
The Enumeration Interface defines the functions by which we can enumerate the elements in a collection of elements. For new code, Enumeration is considered obsolete. However, several methods of the legacy classes such as vectors and properties, several API classes, application codes use this Enumeration interface.
Important Features
- Enumeration is Synchronized.
- It does not support adding, removing, or replacing elements.
- Elements of legacy Collections can be accessed in a forward direction using Enumeration.
- Legacy classes have methods to work with enumeration and returns Enumeration objects.
Declaration
public interface Enumeration<E>
Where E is the type of elements stored in a Collection.
The sub-interfaces of Enumeration interface is NamingEnumeration and implementing class is StringTokenizer.
Creating Enumeration Object
Vector ve = new Vector(); Enumeration e = v.elements();
Example:
Tóm Tắt
Java
import
java.util.Vector;
import
java.util.Enumeration;
public
class
EnumerationClass {
public
static
void
main(String args[])
{
Enumeration months;
Vector<String> monthNames =
new
Vector<>();
monthNames.add(
"January"
);
monthNames.add(
"February"
);
monthNames.add(
"March"
);
monthNames.add(
"April"
);
monthNames.add(
"May"
);
monthNames.add(
"June"
);
monthNames.add(
"July"
);
monthNames.add(
"August"
);
monthNames.add(
"September"
);
monthNames.add(
"October"
);
monthNames.add(
"November"
);
monthNames.add(
"December"
);
months = monthNames.elements();
while
(months.hasMoreElements()) {
System.out.println(months.nextElement());
}
}
}
Output
January February March April May June July August September October November December
Java Enumeration Interface With SequenceInputStream
Java
import
java.io.*;
import
java.util.*;
class
GFG {
public
static
void
main(String args[])
throws
IOException
{
FileInputStream fin
=
new
FileInputStream(
"file1.txt"
);
FileInputStream fin2
=
new
FileInputStream(
"file2.txt"
);
FileInputStream fin3
=
new
FileInputStream(
"file3.txt"
);
FileInputStream fin4
=
new
FileInputStream(
"file4.txt"
);
Vector v =
new
Vector();
v.add(fin);
v.add(fin2);
v.add(fin3);
v.add(fin4);
Enumeration e = v.elements();
SequenceInputStream bin
=
new
SequenceInputStream(e);
int
i =
0
;
while
((i = bin.read()) != -
1
) {
System.out.print((
char
)i);
}
bin.close();
fin.close();
fin2.close();
}
}
Creation Of Custom Enumeration
Java
import
java.util.Enumeration;
import
java.lang.reflect.Array;
public
class
EnumerationClass
implements
Enumeration {
private
int
size;
private
int
cursor;
private
final
Object array;
public
EnumerationClass(Object obj)
{
Class type = obj.getClass();
if
(!type.isArray()) {
throw
new
IllegalArgumentException(
"Invalid type: "
+ type);
}
size = Array.getLength(obj);
array = obj;
}
public
boolean
hasMoreElements()
{
return
(cursor < size);
}
public
object nextElements()
{
return
Array.get(array, cursor++);
}
}
Creation of Java Enumeration using String Array
Java
import
java.util.*;
import
java.io.*;
public
class
EnumerationExample {
public
static
void
main(String args[])
{
String str[] = {
"apple"
,
"facebook"
,
"google"
};
ArrayEnumeration aenum =
new
ArrayEnumeration(str);
while
(aenum.hasMoreElements()) {
System.out.println(aenum.nextElement());
}
}
}
Methods Of Enumeration Interface
- E – type of elements
Modifier And Type
Method
Explanation
default Iterator<E>asIterator() This method returns an Iterator which traverses all the remaining elements covered by this enumeration.booleanhasMoreElements() On implementation, it returns the boolean value if there are more elements to extract or not and returns false when all the elements have been enumerated.EnextElement()This method returns the next element of the enumeration. It throws NoSuchElementException when there are no more elements.
My Personal Notes
arrow_drop_up