java.util.枚舉接口是預定義接口之一,其對象用於從集合框架變量中檢索數據(例如Stack,Vector,HashTable等)僅在向前方向上,而不在向後方向上。該接口已被迭代器取代。
枚舉接口定義了我們可以枚舉元素集合中的元素的函數。對於新代碼,枚舉被認為是過時的。但是,遺留類的一些方法(例如向量和屬性)、一些 API 類、應用程序代碼都使用此枚舉接口。
重要特點
- 枚舉是同步的。
- 它不支持添加、刪除或替換元素。
- 可以使用枚舉向前訪問舊集合的元素。
- 遺留類具有使用枚舉的方法並返回枚舉對象。
聲明
public interface Enumeration<E>
其中 E 是存儲在 Collection 中的元素的類型。
Enumeration接口的sub-interfaces是NamingEnumeration,實現類是StringTokenizer。
創建枚舉對象
Vector ve = new Vector(); Enumeration e = v.elements();
例子:
Java
// Java program to test Enumeration
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());
}
}
}
輸出
January February March April May June July August September October November December
Java 枚舉接口SequenceInputStream
Java
import java.io.*;
import java.util.*;
class GFG {
public static void main(String args[])
throws IOException
{
// creating the FileInputStream objects for all the
// files
FileInputStream fin
= new FileInputStream("file1.txt");
FileInputStream fin2
= new FileInputStream("file2.txt");
FileInputStream fin3
= new FileInputStream("file3.txt");
FileInputStream fin4
= new FileInputStream("file4.txt");
// creating Vector object to all the stream
Vector v = new Vector();
v.add(fin);
v.add(fin2);
v.add(fin3);
v.add(fin4);
// creating enumeration object by calling the
// elements method
Enumeration e = v.elements();
// passing the enumeration object in the constructor
SequenceInputStream bin
= new SequenceInputStream(e);
int i = 0;
while ((i = bin.read()) != -1) {
System.out.print((char)i);
}
bin.close();
fin.close();
fin2.close();
}
}
創建自定義枚舉
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++);
}
}
使用字符串數組創建 Java 枚舉
Java
import java.util.*;
import java.io.*;
public class EnumerationExample {
public static void main(String args[])
{
// String Array Creation
String str[] = { "apple", "facebook", "google" };
// Array Enumeration Creation
ArrayEnumeration aenum = new ArrayEnumeration(str);
// usageof array enumeration
while (aenum.hasMoreElements()) {
System.out.println(aenum.nextElement());
}
}
}
枚舉接口方法
- E-元素類型
修飾符和類型 |
方法 |
Explanation |
---|---|---|
默認迭代器<E> | asIterator() | 此方法返回一個迭代器,該迭代器遍曆此枚舉涵蓋的所有剩餘元素。 |
boolean | hasMoreElements() | 在實現時,如果還有更多元素需要提取,則返回布爾值;如果所有元素都已枚舉,則返回 false。 |
E | nextElement() | 此方法返回枚舉的下一個元素。它拋出NoSuchElementException當沒有更多元素時。 |
相關用法
- Java Enumeration asIterator()用法及代碼示例
- Java Enumeration hasMoreElements()用法及代碼示例
- Java Enumeration nextElement()用法及代碼示例
- Java Enum clone()用法及代碼示例
- Java Enum compareTo()用法及代碼示例
- Java Enum equals()用法及代碼示例
- Java Enum finalize()用法及代碼示例
- Java Enum getDeclaringClass()用法及代碼示例
- Java Enum hashCode()用法及代碼示例
- Java Enum name()用法及代碼示例
- Java Enum ordinal()用法及代碼示例
- Java Enum toString()用法及代碼示例
- Java Enum valueOf()用法及代碼示例
- Java EnumMap containsValue()用法及代碼示例
- Java EnumMap hashCode()用法及代碼示例
- Java EnumMap putAll()用法及代碼示例
- Java EnumSet allOf()用法及代碼示例
- Java EnumMap clear()用法及代碼示例
- Java EnumMap clone()用法及代碼示例
- Java EnumMap containsKey()用法及代碼示例
- Java EnumMap containsValue(value)用法及代碼示例
- Java EnumMap entrySet()用法及代碼示例
- Java EnumMap equals()用法及代碼示例
- Java EnumMap get()用法及代碼示例
- Java EnumMap keySet()用法及代碼示例
注:本文由純淨天空篩選整理自goelshubhangi3118大神的英文原創作品 Enumeration Interface In Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。