由于集合框架中的集合容器太多,而每个集合容器中保存的数据存储的方式都不一样。于是导致我们取数据的时候方式也完全不相同。
Java针对这些所有集合容器取出数据的方式进行共性的抽取,于是针对所有的集合定义了一个接口,在这个接口中描述了所有集合容器的共性遍历规则。
注意:对于集合取元素,无论是什么数据结构,最终共性的取出方式:
一个一个取,取之前先判断,有,取一个,没有,结束。
这种取出的共性方式:迭代。迭代可以理解为取出或者遍历。
而这个接口它就是Iterator,它定义了集合最基本的遍历方式:
Iterator接口的迭代(取出、遍历)方式:
针对一个集合,需要遍历的时候,应该首先去判断集合中有没有元素(对象),有就取出这个元素,没有就不用再进行遍历了。
hasNext()函数表示判断容器中还有没有元素,如果有返回true,我们就可以根据这个返回的结果确定到底还要不要遍历这个集合容器
next()函数表示取出当前遍历到的那个元素。
void remove() 表示删除当前迭代器对象指向的集合中的元素。
对于迭代器Iterator中的函数解释和运行原理如下图所示:
说明:可以把迭代器对象理解成为一个移动的光标,开始的时候,光标会在集合容器的最上面,然后如果使用迭代器对象调用hasNext()函数的时候,光标会指向集合中第一个元素,如果hasNext()函数返回true,则说明有元素可以遍历(迭代),则使用迭代器对象调用next()函数就会将当前光标所指向的元素取出来,如果调用remove()函数,就会删除当前光标所指向的元素。
每执行完一次hasNext()函数,光标都会往下移动,直到移动到集合的最低端,找不到元素为止。移动到最底端代表着此迭代器对象也使用完毕。
如果还想再重新迭代该集合那么需要再根据此集合重新创建一个迭代器对象。
注意:在使用集合对象生成迭代器对象后,那么此时这个迭代器对象已经记录下来此时集合中的结构,在使用迭代器遍历的时候,一定记住不能使用集合的对象来对集合中的元素进行删除或者添加,如果要改动可以使用迭代器对象改动集合,如果要改动集合中的内容可以根据改动后的集合对象再重新生成迭代器对象。