学习笔记之——Iterator 容器与容器遍历

容器:就是能够容纳其他元素这样的对象叫着容器,也就是说:容器也是一个对象

我们想写一个容器的话(可以用数组或者链表来模拟一个容器),它应该具备一个add方法,
用数组模拟容器和数组直接装东西相比, 好处就是不用在考虑数组边界的问题了可以动态增长,想往里头装东西直接装就是了 想知道装多少,调它的size()方法就行
如果我不想用Array这个容器来装东西了 我想用另外一个容器,这个容器的底层实现用链表
链表: 链表里面装的是一个一个的节点,
每个节点里面装的是两部分内容(数据本身, 指向下一个节点的一个引用)
LinkList里面装的是一大堆的Node  写一个Node数组? 千万别 记得开始的节点 顺着引用就可以找到最后的节点

考虑容器的可替换性: 把两个容器对外公开的方法统一起来 比如add size 
Iterator iterator()
写一个接口 里面有那两个方法的定义  面向接口编程 针对Collection进行编程 方法具体的实现不去管它

对于容器经常使用的方法就是 遍历,对于 遍历的方式如果不能够统一的话,那针对接口编程就是无意义(ArrayList(循环) 和LinkList(不断的next)的遍历方式不同)
每一种容器都有一个自己的遍历方式,而这个遍历方式我要想方设法的统一起来,由于底层的实现方式不同,所以只能用一种接口的方式给统一起来 Iterator
Iterator接口里面定义这两个方法Object next();boolean hasNext();
有了这个接口以后,这个接口交给我们容器类的对象去实现
我要求任何一个容器都必须给我一个实现了这个 接口的类的对象
public Iterator iterator() {
return new ArrayListIterator();
}
private class ArrayListIterator implements Iterator{}
这类里面实现了Interator接口的方法 作为实现了Interator类的对象给返回过去

这样我们遍历容器的时候 Iterator it = c.iterator(); 可以用调用 Iterator方法用返回值 it来遍历(返回值 it 是一个 实现了[color=blue]Interator接口的对象[/color] 有遍历所以容器共有的方法).

Iterator it = c.iterator();
while(it.hasNext()) {
Object o = it.next();
System.out.print(o + " ");
}





猜你喜欢

转载自87983133.iteye.com/blog/2247087