迭代器
2018-05-22 本文已影响0人
在努力中
package test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 迭代器:用来遍历数组
* @author 李双阳
*
*/
public class TestIterator {
public static void main(String[] args) {
//定义一个列表
Collection c = new ArrayList();
c.add("一");
c.add("二");
c.add("三");
c.add("四");
c.add("五");
/**第一种遍历方式*/
//第一种便利方式,转成数组
Object[] arr = c.toArray();
// arr[1] = "";
//for循环遍历输出
System.out.println("============for循环==============");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//增强for循环
System.out.println("===========增强for循环(不涉及下标,只遍历)============");
for (Object object : arr) {
System.out.println(object);
}
//集合元素copy到数组中遍历,效率低,导致了内存浪费
/**第二种遍历方式
* 迭代器:
* 1.Iterator() ------------获取当前集合迭代器
* 2.boolean hasNext()------判断有没有下一个元素
* 3.Object next()----------获取当前迭代器指向的元素,获取之后,会指向下一个元素
* 4.void remove()----------删除当前迭代器通过next()获取到的元素
* */
//获取当前集合迭代器
Iterator it = c.iterator();
/*
System.out.println("当前元素之后还有元素吗 ? "+it.hasNext());
System.out.println("当前迭代器指向的元素是: "+it.next());//一
System.out.println("当前迭代器指向的元素是: "+it.next());//二,因为会获取当前对象后,指向下一个对象,最后一个会报错
it.remove();//删除当前对象--二
// it.remove();//不能连续删除两个,因为指向被删除了,如果没有next()上一句也回报错,所以remove不能单独使用
System.out.println(c);//没有了二
*/
System.out.println("===========迭代器遍历(Iterator)============");
while(it.hasNext()){
System.out.println(it.next());
it.remove();//可以用来清空整个集合
}
System.out.println("是否为空: "+c.isEmpty());//true
}
}