这是一篇在学习Collection的前的一个思考。
个人在参考网上各种资料学习的时候,始终没有明白一件事,就是Iterator及ListIterator到底用来做什么的。那么这片博文就是来说说我对于Iterator及ListIterator的看法。
可能在文中出现不少奇奇怪怪的字眼和定义,都是自己的理解和自己定义的,请谅解。
Iterator及ListIterator是什么
最简单来说,其实就是迭代器。当然这样说我自己还是懵的。
Iterator及ListIterator两个都是接口,接口是什么?一套规范,没有标准实现(default方法除外);
那么它规定的是什么?
如何遍历(听起来很搞笑吧?但是我的理解就是如此)。
Iterator规范的是如何查找下一个元素。
ListIterator则在Iterator的基础上,增加了索引的概念,增加了逆向查询方法。
为什么要这么设计呢?
众所周知,数据结构是数据的组织方式,也算是我们计算机领域的基石了。
而我们操作数据时,避免不了和数据结构打交道,其中一种方式就是遍历。
因此一门计算机程序语言在对数据结构进行底层设计时,都会附加的设计遍历的方式。
而java有接口的概念,那么java就实现一种底层的遍历手段,当然还会有多种遍历的方式。
那么Iterator及ListIterator就定义了一套规范,各家都可以实现自己的遍历方式,但是我提供的基础集合类(Collection)就提供了我默认的遍历实现方法。
简单来说就是:
我把规约放在那,你们实现你们的集合类时,爱实现不实现,那是你的事。我提供的我的集合类,我有我的默认实现方法,爱用不用。
好像说的有点嚣张了。。(搞笑一下)
小结
java语言在设计时,处处体现了解耦的思想,同时也体现了其开放的特点。
在数据结构底层设计时也体现了这种思想,Iterator及ListIterator就是其体现的一个方面。
可能这也是java语言生命力持久旺盛的一个小原因。
换个角度思考,如果我们在项目编写代码的时候,是否如此的思考呢?
(写个100多行的方法,感觉组长都要拿起40米的大刀了)
与君共勉。2020.04.08