迭代器是一种设计模式------迭代器模式;Java根据这个设计模式设计的一个对象,就是Iterator迭代器。
在Java集合类Collection中有很多复杂的数据结构,比如ArrayList,LinkList ,HashSet 等等;它们的底层实现都各不相同,如果要用for循环遍历,那就要熟悉它们的数据结构是怎样的,获取对应的value的操作方法是什么;或者从它们之中排除某一个特定的值也要先拿出来进行比较,再调用集合类中特有的remove方法。
如:
ArrayList的For循环遍历:
那么,有没有一种方式,是不需要暴露容器的底层数据结构,又能让别人遍历容器元素的呢?
这就是迭代器模式:
它主要解决的问题就是提供一种方法给使用者顺序(必须是顺序,不能是逆序或者中途截取)获取集合容器中全部元素,并且按顺序输出;使用者无需关心内部数据结构的实现。遍历的工作也有原来的集合类主动去get ; 变为了迭代去主动去游走拿;这样的有个好处就是对LinkList这种遍历较慢的容器类能加快遍历速度。
怎么用?
在array.iterator()的时候就是会创建并且返回一个Itr 类,这个类是实现了Iterator 接口的。
看看源码:::
iterator.hasNext() 返回值是一个Boolean,循环中还有next就true,继续拿元素。
iterator.next() 返回值是一个Obejectt;就是下一个元素。
ArrayList array = new ArrayList();
array.add("a");
array.add("b");
array.<