Enumeration接口

Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。 Enumeration接口定义了从一个数据结构得到连续数据的手段。例如,Enumeration定义了一个名为nextElement的方法,可以用来从含有多个元素的数据结构中得到的下一个元素。
Enumeration接口提供了一套标准的方法,由于Enumeration是一个接口,它的角色局限于为数据结构提供方法协议。下面是一个使用的例子:
//e is an object that implements the Enumeration interface
while (e.hasMoreElements()) {
   Object o= e.nextElement();
   System.out.println(o);

实现该接口的对象由一系列的元素组成,可以连续地调用nextElement()方法来得到 Enumeration枚举对象中的元素。Enumertion接口中仅定义了下面两个方法。

/**
    * Tests if this enumeration contains more elements.
    *
    * @return  <code>true</code> if and only if this enumeration object
    *           contains at least one more element to provide;
    *          <code>false</code> otherwise.
    */

测试Enumeration枚举对象中是否还含有元素,如果返回true,则表示还含有至少一个的元素。
・boolean hasMoreElemerts()
   /**
    * Returns the next element of this enumeration if this enumeration
    * object has at least one more element to provide.
    *
    * @return     the next element of this enumeration.
    * @exception  NoSuchElementException  if no more elements exist.
    */

如果Bnumeration枚举对象还含有元素,该方法得到对象中的下一个元素。
・Object nextElement()


Enumeration为接口,位于java.util包中,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。

例如,要输出 Vector v 的所有元素,可使用以下方法:

for (Enumeration e = v.elements(); e.hasMoreElements();){
    System.out.println(e.nextElement());
}


Enumeration这些方法主要通过向量的元素、哈希表的键以及哈希表中的值进行枚举。枚举也用于将输入流指定到 SequenceInputStream 中。

使用Enumeration遍历Hashtable:

Hashtable hash=new Hashtable();
hash.put( "abc","1");
hash.put("ddd","1");
hash.put( "asdf","2");
Enumeration enumkey = hash.keys() ;
while(enumkey.hasMoreElements()){
   String str=(String)enumkey.nextElement();
   System.out.println("--------"+str);
   System.out.println("========="+hash.get( str));
}
enumkey = hash.keys() ;
while(enumkey.hasMoreElements()){
    String str=(String)enumkey.nextElement();
    System.out.println("--------"+str);
    System.out.println("========="+hash.get( str));
}

从上面的代码可以看出遍历一个枚举对象有两种方法,一种是for循环一种是使用while,应该特别注意使用for循环的方法与普通的for循环有点差异。

为了读取枚举值中的内容,还可以使用IO输入流SequenceInputStream 将内容输出。
在Servlet中,通过request.getParameterNames()可以获取到请求中的附加参数的枚举值:

Enumeration enume = request.getParameterNames();
PrintWriter out = response.getWriter();
out.write("");
out.write("");
out.write("");
out.write("servlet演示");
out.write("");
out.write("");
out.write("");
out.write("传递的参数信息:");
while (enume.hasMoreElements()) {
         String paramName = enume.nextElement().toString();
         out.write(paramName + "=" + request.getParameter(paramName));
}
out.write("");
out.write("");

注:此接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。


你可能感兴趣的:(object,接口,element,角色,元素)