public interface Enumeration<E>
实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement
方法将返回一系列的连续元素。
例如,要输出 Vector<E> v的所有元素,可使用以下方法:
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)System.out.println(e.nextElement());
这些方法主要通过向量的元素、哈希表的键以及哈希表中的值进行枚举。枚举也用于将输入流指定到 SequenceInputStream
中。
注:此接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。
import java.util.Enumeration; public class DemoEnumeration {public static void main(String[] args) {//实例化MyDataStruct类型的对象MyDataStruct myDataStruct=new MyDataStruct();//得到描述myDataStruct类型对象的enumeration对象Enumeration<Object> myEnumeration =myDataStruct.getEnum();//使用对象循环显示myDataStruct类型的对象中的每一个元素while (myEnumeration.hasMoreElements())System.out.println(myEnumeration.nextElement());} } //MyEnumeration类实现Enumeration接口 class MyEnumeration implements Enumeration<Object> {int count; // 计数器int length; //存储的数组的长度Object[] dataArray; // 存储数据数组的引用MyEnumeration(int count,int length,Object[] dataArray){this.count = count;this.length= length;this.dataArray=dataArray;}public boolean hasMoreElements() {return (count< length);}public Object nextElement() {return dataArray[count++];} } //MyDataStruct类用于实例化一个简单的、可以提供enumeration对象 //给使用程序的数据结果对象 class MyDataStruct{String[] data=null;MyDataStruct(){data=new String[4];data[0] ="zero";data[1]="one";data[2] ="two";data[3]="three";}// 返回一个enumeration对象给使用程序Enumeration<Object> getEnum() {return new MyEnumeration(0,data.length,data);} }
应用一:
import java.util.Enumeration; import java.util.Vector;
public class VectorTest {public static void main(String[] args){Vector<String> myvector=new Vector<String>();myvector.addElement("hello1");myvector.addElement("hello2");myvector.addElement("hello3");for(Enumeration<String> enu=myvector.elements();enu.hasMoreElements();){//输出 myvector的所 有元素,可使用以下方法: System.out.println(enu.nextElement());//nextElement()如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素 }Enumeration<String> enu=myvector.elements();while(enu.hasMoreElements()){ //hasMoreElements()测试此枚举是否包含更多的元素 System.out.println(enu.nextElement());}System.out.println(myvector.getClass().getName() + '@' + Integer.toHexString(myvector.hashCode()));} }
应用二:
package enumeration; import java.util.Enumeration; import java.util.Hashtable;public class HashtableTest {public static void main(String[] args) {Hashtable<String, String> hash = new Hashtable<String, String>();hash.put("one", "1");hash.put("two", "2");hash.put("three", "3");Enumeration<String> enumkey = hash.keys();while (enumkey.hasMoreElements()) {String str = (String) enumkey.nextElement();System.out.println("--------" + str);System.out.println("=========" + hash.get(str));if ("1".equals(hash.get(str)))hash.remove(str);}System.out.println("-ssssssssssssssssssss-" + hash.get("three"));enumkey = hash.keys();while (enumkey.hasMoreElements()) {String str = (String) enumkey.nextElement();System.out.println("--------" + str);System.out.println("=========" + hash.get(str));}} }
应用三:
<html><head><base href="<%=basePath%>"><title></title></head><body><center><h2>志愿者注册</h2><FORM action="doSubmit.jsp" method="post"><table border=0><tr valign="top"><td align="right">姓名:</td><td align="left"><input type="text" name="name" maxlength="50" size="40"value="chenxd" /></td></tr><tr valign="top"><td align="right">email:</td><td align="left"><INPUT type="text" name="email" maxlength="80" size="40"value="yourname@beijing2008.com" /></td></tr><tr valign="top"><td align="right">性别:</td><td align="left"><INPUT type="radio" name="sex" value="男" checked="true" />男<INPUT type="radio" name="sex" value="女" />女</td></tr><tr valign="top"><td align="right">会何种外语:</td><td align="left"><input type="checkbox" name="lang" value="英语" checked="true" />英语<input type="checkbox" name="lang" value="法语" />法语<input type="checkbox" name="lang" value="俄语" />俄语<input type="checkbox" name="lang" value="德语" />德语</td></tr><tr valign="top"><td align="right">注册地区:</td><td align="left"><select name="regTelephone"><option value="800-810-2008">北京</option><option value="800-820-2008" selected="true">上海</option></select></td></tr><tr valign="center"><td align="right">个人简介:</td><td align="left"><textarea rows="5" cols="40" name="intro"></textarea></td></tr><tr valign=top><td colspan="2" align="center"><INPUT type="submit" value="注册" /><INPUT type="reset" value="重置"/></td></tr></table></FORM></center></body> </html>
<html><head><base href="<%=basePath%>"><title>用户注册:使用request对象获取用户提交数据</title></head><body><h2>您提交的内容如下:</h2><%String current_param = "";request.setCharacterEncoding("GBK");Enumeration<String> params = request.getParameterNames();while (params.hasMoreElements()) {current_param = (String) params.nextElement();out.print("参数名:" + current_param);String[] values = request.getParameterValues(current_param);for (int i = 0; i < values.length; i++)out.print(" 参数值:" + values[i]);out.print("<br>");}%></body> </html>