集合元素的遍历操作,使用迭代器Iterator接口
1.内部的方法:hasNext() 和 next():
Iterator迭代器不会创造集合,在原集合上面进行迭代。
Iterator迭代器通过几个函数实现迭代。
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Test2 { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); Iterator iterator = coll.iterator(); //方式一: //System.out.println(iterator.next()); //System.out.println(iterator.next()); //System.out.println(iterator.next()); //System.out.println(iterator.next()); //集合中没有元素以后会报错 //方式二:不推荐 //for(int i = 0 ; i < coll.size() ; i ++) //{ // System.out.println(iterator.next()); //} //方式三:推荐 while(iterator.hasNext()) { System.out.println(iterator.next()); } } }
结果:
2.集合对象每次调用Iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
错误操作:··
3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove();
for循环:
List接口:
ArrayList、LinkedList、Vector三者的异同:
同:
三个类都是实现了List接口,存储数据的特点相同:存储有序、可重复数据
不同:
ArragList:作为List接口的主要实现类;线程不安全,效率高;底层使用Object[] elementData存储
LinkedList:对于频繁的插入、删除调查,使用此类概率比ArrayList高。底层使用双向箭头
Vector:作为List接口的古老实现类。线程安全,效率低。底层使用Object[] 存储
List接口中的方法:
每日练习: