Iterator对凑集类中的任何一个实现类,都可以返回这样一个Iterator工具。可以适用于任何一个类。
由于凑集类(List和Set等)可以装入的工具的类型是不愿定的,从凑集中取出时都是Object类型,用时都须要进行逼迫转化,这样会很麻烦,用上泛型,便是提前见告凑集确定要装入凑集的类型,这样就可以直策应用而不用显示类型转换.非常方便.
foreach和Iterator的关系:

for each以用来处理凑集中的每个元素而不用考虑凑集定下标。便是为了让用Iterator大略。但是删除的时候,差异便是在remove,循环中调用凑集remove会导致原凑集变革导致缺点,而该当用迭代器的remove方法。
利用for循环还是迭代器Iterator比拟:
采取ArrayList对随机访问比较快,而for循环中的get()方法,采取的即是随机访问的方法,因此在ArrayList里,for循环较快
采取LinkedList则是顺序访问比较快,iterator中的next()方法,采取的即是顺序访问的方法,因此在LinkedList里,利用iterator较快
从数据构造角度剖析,for循环适宜访问顺序构造,可以根据下标快速获取指定元素.而Iterator 适宜访问链式构造,由于迭代器是通过next()和Pre()来定位的.可以访问没有顺序的凑集.
而利用 Iterator 的好处在于可以利用相同办法去遍历凑集中元素,而不用考虑凑集类的内部实现(只要它实现了 java.lang.Iterable 接口),如果利用 Iterator 来遍历凑集中元素,一旦不再利用 List 转而利用 Set 来组织数据,那遍历元素的代码不用做任何修正,如果利用 for 来遍历,那所有遍历此凑集的算法都得做相应调度,由于List有序,Set无序,构造不同,他们的访问算法也不一样.(还是解释了一点遍历和凑集本身分离了)