java 中的 Enumeration 在Vector,Hashtable和web中的应用

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>

 

 

 

 

 

posted @ 2011-11-02 19:49  残星  阅读(1886)  评论(0编辑  收藏  举报