在学习java前,我接触了很久的c,其中学到的第一个集合就是int数组了,其中遍历数组的方式其实还是挺麻烦的。需要进行sizeof(arr)/sizeof(int) 这样对int数组的元素个数进行计算。当然学到字符串时字符可以通过库函数比如Strlen这样的函数来计算长度,再配合while或者for进行遍历。但是在整形浮点之类的数组中没有完善的函数来直接对数组进行操作。因此,在学习了java函数后,容器的概念和便利性让我印象深刻。

java中拥有实现接口和增强的函数来进行遍历。接口可以实现的有Iterator迭代器,还有增强for函数,这两种方式可以替代普通for和while方法来进行遍历。

Iterator实现方法如下。

//定义集合
Collection coll =new Arraylist();//这里定义了一个数组集合
//实现迭代器Iterator
Iterator iter=coll.Iterator;
//然后就可以通过集合来调用迭代器方法了
while(iter.hasNext()){//通过hasNext来判断next上面有没有元素
System.out.println(iter.next());//输出next上的元素。
}

上面可以看出两个方法hasNext和next的两个方法,由于hasNext返回值是boolean类型,所以可以放在while后面的括号中。当然无论在哪个语言中,遍历都是通过指针一个一个调用下一个元素来进行的,所有next指针 顾名思义,是调用下一个元素。通过对其System out可以进行输出。hasNext的最大作用就是限制了next指针的移动位置,通过hasnext可以进行下一个元素的预知。当下一个元素不在集合内返回值为false。中断循环。

注意,hasNext不会导致指针的移动,而next可以导致指针移动所以

while(iter.next()!=null){//调用next去判断下一个指针位置元素是否为空。
System.out.println(iter.next());}//再调用next进行输出

在以上的方法中,next调用了两次,当然第一次是进行判断,那么就会导致判断的时候指针移位。输出的时候指针又向下移位了一格。但是移位两格只输出了后面的那一格。所以导致每次输出会略过一个元素。

所以由此可见hasNext还是不可或缺的方法。

接着就是remove方法,这个方法可以在调用了next方法指针偏移了之后将指针进行归位,也就是直到第一个元素的前面一个位置。此时指针没有指向任意一个元素,因此不能直接输出该位置,要再调用next方法进行输出。

当然在Map中也有个remove方法,那个是移除元素。跟这个用法天壤之别。在此做个区别提示。