collection提供了方法-Iterator iterator()
该方法可以获取当前集合元素的迭代器:
* java.util.Iterator接口,迭代器接口,规定了遍历集合的相关操作
* 使用迭代器遍历集合存在的步骤为:
* 问->取->删,其中删除元素不是必要操作
* 不同的集合都提供了遍历自身元素的迭代器实现类,我们无需记住它们的名字,当做Iterator使用即可.
新建一个集合用于后边示例:
Collection c = new ArrayList(); c.add("1"); c.add("#"); c.add("2"); c.add("#"); c.add("3"); c.add("#"); c.add("4"); c.add("#"); c.add("5"); System.out.println("c:"+c);
集合中的元素返回时返回的是object类型,必须经过造型
迭代器的常用方法: boolean hasNext()
询问迭代器是否还有下一个元素可供迭代
注:迭代器默认开始位置是在集合第一个元素之前,因此第一次调用时判断的就是是否有第一个元素,并且无论调用多少次hasNext()方法,迭代器的位置都不会改变.语句方法: E next()
迭代器向后移动一个位置指向集合下一个元素并将其获取.
Iterator it = c.iterator(); while (it.hasNext()){ String str = (String) it.next(); if("#".equals(str)){ it.remove(); } System.out.println(str); } System.out.println(c);
增强型for循环迭代器遍历过程中不得通过集合方法(即下述方法)增删元素,否则会抛出异常
if("#".equals(str)){
c.remove(str);
}
JDK1.5之后推出的一个新特性
* 可以让我们用相同的语法遍历集合或数组
* 语法:for(类型 变量名 : 集合或数组){... }
新建数组array并输出
String[] array ={"1","2","3","4","5"}; for(int i=0;i
新循环遍历数组会被编译器改成普通for循环
for (String str : array){ System.out.println(str); }
JDK5之后推出的另一个特性:泛型
泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性,方法的参数或方法返回值的类型,使得我们使用时更加方便.在集合中泛型被广泛使用,用于规定集合中的元素类型.泛型原型为Object,编译器认可 赋值操作时,编译器会检查类型是否匹配,不匹配会编译不通过
//Collection<集合类型,如果规定为String则添加int类型时编译不通过>
//新建一个数组用于示范 Collectionc = new ArrayList(); c.add("1"); c.add("2"); c.add("3"); c.add("4"); c.add("5"); System.out.println("c:"+c); Iterator it =c.iterator();//迭代器
迭代器指定的泛型应当与其遍历的集合泛型一致
while (it.hasNext()){ String str =(String)it.next(); System.out.println(str); }
新循环遍历集合会被编译器改回成遍历器遍历
for (Object obj : c){ String str =(String)obj; System.out.println(str); }