标题 :Iterator(迭代器)
可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象。
Iterator iterator = list.iterator();
while(iterator.hasNext()){
String string = iterator.next();
}
概述
迭代—简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式。迭代器(Iterator)模式是用于提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。
在没有迭代器时我们是这么进行处理的。如下:
【数组】
int[] arrays = new int[10];
for(int i = 0 ; i arrays.length ; i++){
int a = arrays[i];
}
【ArrayList】
ListString list = new ArrayListString();
for(int i = 0 ; i list.size() ; i++){
String string = list.get(i);
}
上面两种方式的弊端:对于这两种方式,我们都事先知道集合的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来。同时每一种集合对应一种遍历方法,客户端代码无法复用。
在实际应用中需要如何将上面将两个集合进行整合是相当麻烦的。所以为了解决以上问题,Iterator模式出现,它总是用同一种逻辑来遍历集合。
使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator来维护。客户端从不直接和集合类打交道,它总是控制Iterator,向它发送向前,向后,取当前元素的命令,就可以间接遍历整个集合。
java.util.Iterator
在Java中Iterator是一个接口,Java所有集合类都是进行迭代的。
1、接口定义
public interface Iterator{
boolean hasNext();
Object next();
void remove();
}
2、其中:
boolean hasNext():该方法用于判断集合对象是否还有下一个元素,如果已经是最后一个元素,则返回false。
Object next():获取出下一个元素。
void remove():从迭代器指向的Collection中移除迭代器返回的最后一个元素。
【注意】:Iterator只有上面接口中的三个方法,再没有其他的方法了。
所以对于迭代器中的元素只能删,不能加。
而且这里的移除只是针对于迭代器中的元素,而非Iterator所操作的集合的元素,即就是集合对象不能动。
3、迭代方法:
iterator()方法——是所操作的集合类的方法
——是集合类的引用 . iterator()—>返回的是一个Iterator对象
for(Iterator it = list.iterator(); it.hasNext();){
//假如要输出的是String类型
String s = (String) it