迭代器
说明:迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员
不需要了解该序列结构。迭代器通常被称为“轻量级”对象,因为创建它代价小。forEach是
在Java1.5版本之后,使用的一种比较简洁的遍历List的方法。
相关知识与实施步骤:
如Set序列当中的值;
Iterator <Student>it=set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } Iterator来遍历map中的值序列 Iterator <Student>it=map.values().iterator(); while(it.hasNext()){ Sysem.out.println(it.next()); }
hasNext():如果next返回了元素而不是抛出异常,则返回true。
返回:如果迭代器具有多个元素,则返回true。
思路:
先用集合对象的iterator()方法来获取Iterator对象;然后再通过Iterator的.hasNext()方法来判断是
否有元素,有则返回true,否则返回false来作为循环判断条件;最后再循环里面用next()方法来获
取元素对象。
Iterator接口
1.Iterator定义
格式:<<interface>>Iterator
作用:对于某个序列实现该interface,功能是“使用”迭代器。
如:
public interface Iterator<E>{
boolean hasNext();//判断是否存在下一元素
E next();
void remove();
}
2.Iterator接口
Iterator接口功能“返回”一个迭代器。
另外,Iterator接口被foreach语句用来在序列中移动,
import Java.util.Iterator;
public interface Iterable<T>{
Iterator <T>iterator();
}
3.Iterator的方法
此方法可删可查,可以两个方向遍历List,可在List中插入和删除元素。
4.Iterator与泛型搭配
由于集合类中装入的对象类型(list或set)不确定,而从集合中取出来的
都是Object类型,在使用时较麻烦,这是就引入了泛型,提前告诉了集合
要装入的类型,这样就可以直接使用而不用显示类型转换。
5.for循环与迭代器的效率对比
for循环适合访问顺序结构,而Iterator适合访问链式结构,因为迭代器是通过
next()和pre()来定位的,可以没有顺序的集合。
泛型
为什么要引入泛型?作用是什么?
泛型是java语言的类型相同的一种扩展,以支持创建可以按类型进行参数化的类。
可以把类型参数看做使用参数化类型指定类型的占位符,就行形参是运行时传递值
一样的符号。
好处1:用到了泛型时,可增强程序的安全和健壮性,有点类似于JDK中的某些标注(例如override)。
还有个好处就是在用forEach遍历集合时,不需要进行强制转换。
for(String name:classes){
System.out.println(num+”:\t”+name);
num++;
}
好处2:若上面的语句没通过泛型说明String类型,则for循环会报错(理由:上面第四点)