作用:遍历我们集合的元素
遍历Vector的迭代器
通过调用Vector特有的方法elements方法返回古老的迭代器
Enumeration
有两个方法:
boolean |
hasMoreElements()
测试此枚举是否包含更多元素。
|
E |
nextElement()
返回此枚举的下一个元素,如果此枚举对象至少有一个元素可以提供。
|
public static void main(String[] args) { //创建集合对象 Vector<String> v=new Vector<String>(); //添加元素 v.add("1"); v.add("2"); v.add("3"); v.add("4"); //调用方法返回古老的迭代器 Enumeration<String> e=v.elements(); //迭代遍历 while(e.hasMoreElements())//判断是否还有元素 { //获取元素 String s=e.nextElement(); System.out.println(s); } } }
遍历其他集合的迭代器iterator
底层通过挪动指针来遍历我们集合元素,遍历过程中,不能直接增删我们的原集合元素,但是可以通过调用Iterator的remove()通过改变底层比较的状态值来删除集合元素
boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true
Object next():返回集合里下一个元素
void remove():删除集合里上一个next方法返回的元素
public static void main(String[] args) { // TODO Auto-generated method stub //创建集合对象 ArrayList<String>list=new ArrayList<String>(); //添加元素 list.add("1"); list.add("3"); list.add("2"); //获取新的迭代器 Iterator <String> t=list.iterator(); //迭代遍历 while(t.hasNext()) { //判断后面是否还有元素 String s=t.next(); System.out.println(s); t.remove();//是改变底层比较的状态值---由true变成false }
调用iterator()方法返回Iterator接口(迭代器),这个iterator方法是由Iterable接口提供的,collection接口继承Iterable接口,但是collection接口还是顶级接口,Iterable只是拓展功能
对象对应的类可以实现Iterabke,那么这个对象就可以进行迭代遍历,增强for循环底层是由迭代器实现的--------jdk1.5新特性。
上面代码使用foreach循环来迭代访问Collection集合元素,与使用Iterator迭代访问集合元素类似
foreach 循环中的迭代变量也不是集合元素本身,系统知识依次把集合元素的值赋给迭代变量,因此在foreach循环中修改迭代变量的值ue没有任何的实际意义,同样当使用foreach循环访问集合元素的时候,该集合也不能被改变,否则将引发ConcurrentModificationException异常,如上图1处