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
}
}
迭代器
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 什么是迭代 Wiki定义:是重复反馈过程的活动,其目的是为了接近并到达所需的目标或结果。 在程序中,迭代是一种遍历...
- 集合框架 集合类的由来面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合...
- 当解释器想要迭代访问一个对象的时候,会调用iter(x)。 iter方法会检查对象是否实现了__iter__方法,...