Iterator和ListIterator
2017-03-26 21:14
197 查看
1.使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型,而ListIterator只能用于List及其子类型。
2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。
3.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历,而Iterator不可以。
4.ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现,而Iterator没有此功能。
5.都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现,而Iterator仅能遍历,不能修改
eg:
结果:
2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。
3.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历,而Iterator不可以。
4.ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现,而Iterator没有此功能。
5.都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现,而Iterator仅能遍历,不能修改
eg:
package com.lmr.collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class TestLinkedList { public static void main(String[] args) { List<String> a=new LinkedList<>(); a.add("Red"); a.add("Blue"); a.add("White"); List<String> b=new LinkedList<>(); b.add("Apple"); b.add("Banana"); b.add("Lemon"); b.add("Watermelon"); b.add("Cherry"); ListIterator<String> aIter=a.listIterator(); Iterator<String> bIter=b.iterator(); while (aIter.hasNext()) { String next; String pre = null; if(aIter.hasPrevious()){//next()和previous()是将迭代器移动,越过下一个元素,并返回刚才越过的元素的引用 pre=(String) aIter.previous(); aIter.next();//将迭代器指标往后移动一次 next=(String) aIter.next(); } else{ next=(String) aIter.next(); } System.out.println(pre + " - - "+next); } while(bIter.hasNext()){//向a中添加b中的元素(每隔一个a中的元素添加一个b中的元素,当a中原有的元素遍历完后,b中剩下的元素添加到a的末尾) if(aIter.hasNext()){ aIter.next(); } aIter.add(bIter.next()); } System.out.println(a); bIter=b.iterator();//删除b中的元素(每隔一个元素删除一个) while(bIter.hasNext()){ bIter.next(); if(bIter.hasNext()){ bIter.next(); bIter.remove(); } } System.out.println(b); a.removeAll(b);//从a中去除b System.out.println(a); } }
结果:
null - - Red Red - - Blue Blue - - White [Red, Blue, White, Apple, Banana, Lemon, Watermelon, Cherry] [Apple, Lemon, Cherry] [Red, Blue, White, Banana, Watermelon]
相关文章推荐
- Iterator和ListIterator的区别
- Iterator和ListIterator的不同使用
- Iterator和ListIterator比较
- java Iterator接口和LIstIterator接口分析
- JAVA中ListIterator和Iterator详解与辨析
- 容器(三):ListIterator和Iterator辨析与源码分析
- Iterator和ListIterator的不同使用方法
- 迭代器Iterator与ListIterator的简单应用;
- 14、Iterator跟ListIterator的区别
- Iterator和ListIterator
- java:Iterator和ListIterator
- Iterator和ListIterator
- Iterator和ListIterator的不同使用方法
- JAVA中ListIterator和Iterator详解与辨析
- arraylist的迭代器的实现研究---其中的iterator(不是listiterator)---(源码)
- Iterator之ListIterator简介
- Iterator和ListIterator的不同使用方法
- Iterator ListIterator
- Java集合(3)——ListIterator接口源码 & ListIterator接口与Iterator接口辨析
- Iterator 和 ListIterator