黑马程序员技术交流社区

标题: Enumeration和Iterator的区别?(完成) [打印本页]

作者: 王琪    时间: 2014-3-9 22:11
标题: Enumeration和Iterator的区别?(完成)
本帖最后由 王琪 于 2014-3-11 13:03 编辑

  1. <b>package dom;
  2. import java.io.*;
  3. import java.util.*;

  4. public class Text {
  5.         public static void main(String[]args){
  6.                  Vector v1=new Vector();//v1=[],size=0,capacity=10
  7.                  for(int j=1 ;j<=5 ;j++ )
  8.                          v1.addElement(new Integer(j));//v1=[1,2,3,4,5],size=5,capacity=10
  9.                  System.out.println("v1="+v1);
  10.                  Integer i=new Integer(3);
  11.                  System.out.println(v1.indexOf(i)+" "+v1.indexOf(i,4));//2 -1
  12.                  System.out.println(v1.contains(i)+" "+v1.lastIndexOf(i));//true 2
  13.                  Vector v2=new Vector(3,4);//v2=[],size=0,capacity=3
  14.                  for(int j=4 ;j<8 ;j++ )
  15.                          v2.addElement(new Integer(j));//v2=[4,5,6,7,8],size=5,capacity=7
  16.                  
  17.                  v2.ensureCapacity(9);//v2=[4,5,6,7,8],size=5,capacity=11
  18.                  
  19.                  Vector v3=new Vector(2);//v3=[],size=0,capacity=2
  20.                  v3.setSize(4);//v3=[null,null,null,null]
  21.                  v3.setElementAt(new Integer(9), 1);//v3=[null,9,null,null]
  22.                  v3.setElementAt(new Integer(5), 3);//v3=[null,9,null,5]
  23.                  v3.insertElementAt(v3.elementAt(3),1);//v3=[null,5,9,null,5],size=5,capacity=8
  24.                  
  25.                  v3.ensureCapacity(9);//v3=[null,5,9,null,5],size=5,capacity=16
  26.                  v3.removeElement(new Integer(9));//v3=[null,5,null,5]
  27.                  v3.removeElementAt(v3.size()-2);//v3=[null,5,5]
  28.                  java.util.Enumeration ev=v3.elements();//这里不太会  v3.elements()返回枚举?Enumeration Iterator 不一样?
  29.                    //得到描述myDataStruct类型对象的enumeration对象
  30.          //Enumeration myEnumeration =myDataStruct.getEnum();
  31.                  
  32.                  while(ev.hasMoreElements()){
  33.                          System.out.println(ev.nextElement()+" ");
  34.                  }
  35.                  System.out.println();
  36.                  v3.removeElementAt(0);//v3=5,5]
  37.                  v3.addAll(v1);//v3=[5,5,1,2,3,4,5];
  38.                  v3.removeAll(v2);//v3=[1,2,3]
  39.                  v3.addAll(2, v1);//v3=[1,2,1,2,3,4,5,3]
  40.                  v3.retainAll(v2);//v3=[4,5]
  41.                  
  42.                  v1.subList(1, 3).clear();//这里也不明白 v1改变了吗????v1=[1,2,3,4,5]  变了[1, 4, 5]为啥?
  43.                  System.out.println(v1);
  44.         }
  45. }
  46. </b>
复制代码
输出
  1. v1=[1, 2, 3, 4, 5]
  2. 2 -1
  3. true 2
  4. null
  5. 5
  6. 5
  7. [1, 4, 5]
复制代码





作者: 欧阳疯    时间: 2014-3-10 10:30
Enumeration与Iterator区别
Iterator对集合进行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:
迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。
方法名称得到了改进。
简化对集合的操作,主要功能是遍历并选择集合中的对象,其中有三个最要的方法:
       1.hasNext() 返回布尔值 看集合中还有没有元素
                                          2.next() 返回下一个元素 返回的是O的所一定要强转一下
       3.remove() 元素删除
接口 Iterator:
        构建一个Iterator迭代器 -->Iterator iterator=所要进行迭代的集合对象.iterator();
接口 Enumeration: 注意=====Enumeration已经不是主流,Iterator是它的下一代替代品
        构建一个Enumeration迭代器-->Enumeration enumeration=所要进行迭代的集合对象.elements()
Iterator:
方法摘要 boolean ()
            如果仍有元素可以迭代,则返回 true。()
            返回迭代的下一个元素。void()
            从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
Enumeration: 方法摘要boolean()
            测试此枚举是否包含更多的元素。()
            如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
作者: 透过生活    时间: 2014-3-10 11:15
    java中的集合类都提供了返回Iterator的方法,就是迭代器,它和Enumeration的主要区别其实就是Iterator可以删除元素,但是Enumration却不能。

         还有一点要注意的就是,使用Iterator来遍历集合时,应使用Iterator的remove()方法来删除集合中的元素,使用集合的remove()方法将抛出ConcurrentModificationException异常

作者: 王琪    时间: 2014-3-10 12:05
:)谢谢你我好像明白点了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2