哪个集合类可以使用listiterator进行遍历
1个回答
展开全部
Iterator与ListIterator
迭代器模式给容器的应用带来以下好处:
支持以不同的方式遍历一个容器角色。根据实现方式的不同,效果上会有差别。
简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。
对同一个容器对象,可以同时进行多个遍历。因为遍历状态是保存在每一个迭代器对象中的。
迭代器模式的适用范围:
访问一个容器对象的内容而无需暴露它的内部表示。
支持对容器对象的多种遍历。
为遍历不同的容器结构提供一个统一的接口(多态迭代)。
Iterator的最大威力:能够将遍历序列的操作与序列底层的结构分离。迭代器统一了对容器的访问方式。
Collection实现了Iterator接口,所以我们可以用Iterator来遍历多种集合类型。
Iterator接口中有三个方法:
1.hasNext():返回布尔值,查看是否有元素可以遍历
2.next():返回迭代的下一个元素
3.remove():删除用next()返回的最后一个元素,不能连续调用remove方法。只能next一次再remove一次。
使用了这三个方法的Demo:
1 import java.util.ArrayList;
2 import java.util.Arrays;
3 import java.util.Iterator;
4 import java.util.List;
5
6 public class IteratorTest {
7 public static void main(String[] args) {
8 List<SuperClass> list = new ArrayList(Arrays.asList(new SuperClass(), new Class01(),
9
10 new Class02()));
11 Iterator<SuperClass> it = list.iterator();
12 while(it.hasNext()){
13 SuperClass s = it.next();
14 System.out.println(s);
15 System.out.println("删除该元素");
16 it.remove();
17
18 }
19 System.out.println("\n"+list);
20 }
21 }
22
23 class SuperClass{};
24 class Class01 extends SuperClass{}
25 class Class02 extends SuperClass{}
ListIterator
ListIterator是Iterator的子类接口,只能用于各种List类的访问。Iterator只能单向向前移动,但是ListIterator可以双向移动。
逆向访问
逆向访问用到的两个方法:hasPrevious()、previous()。
注:逆向访问时,初始化ListIterator实例时,要提供一个list.size()参数,这样才能总尾部开始迭代。
逆向访问的Demo:
1 List<String> list=new ArrayList<String>();
2 list.add("first");
3 list.add("second");
4 list.add("third");
5 ListIterator it=list.listIterator (list.size());
6 while(it.hasPrevious()){
7 System.out.println(it.previous());
8 }
迭代器模式给容器的应用带来以下好处:
支持以不同的方式遍历一个容器角色。根据实现方式的不同,效果上会有差别。
简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。
对同一个容器对象,可以同时进行多个遍历。因为遍历状态是保存在每一个迭代器对象中的。
迭代器模式的适用范围:
访问一个容器对象的内容而无需暴露它的内部表示。
支持对容器对象的多种遍历。
为遍历不同的容器结构提供一个统一的接口(多态迭代)。
Iterator的最大威力:能够将遍历序列的操作与序列底层的结构分离。迭代器统一了对容器的访问方式。
Collection实现了Iterator接口,所以我们可以用Iterator来遍历多种集合类型。
Iterator接口中有三个方法:
1.hasNext():返回布尔值,查看是否有元素可以遍历
2.next():返回迭代的下一个元素
3.remove():删除用next()返回的最后一个元素,不能连续调用remove方法。只能next一次再remove一次。
使用了这三个方法的Demo:
1 import java.util.ArrayList;
2 import java.util.Arrays;
3 import java.util.Iterator;
4 import java.util.List;
5
6 public class IteratorTest {
7 public static void main(String[] args) {
8 List<SuperClass> list = new ArrayList(Arrays.asList(new SuperClass(), new Class01(),
9
10 new Class02()));
11 Iterator<SuperClass> it = list.iterator();
12 while(it.hasNext()){
13 SuperClass s = it.next();
14 System.out.println(s);
15 System.out.println("删除该元素");
16 it.remove();
17
18 }
19 System.out.println("\n"+list);
20 }
21 }
22
23 class SuperClass{};
24 class Class01 extends SuperClass{}
25 class Class02 extends SuperClass{}
ListIterator
ListIterator是Iterator的子类接口,只能用于各种List类的访问。Iterator只能单向向前移动,但是ListIterator可以双向移动。
逆向访问
逆向访问用到的两个方法:hasPrevious()、previous()。
注:逆向访问时,初始化ListIterator实例时,要提供一个list.size()参数,这样才能总尾部开始迭代。
逆向访问的Demo:
1 List<String> list=new ArrayList<String>();
2 list.add("first");
3 list.add("second");
4 list.add("third");
5 ListIterator it=list.listIterator (list.size());
6 while(it.hasPrevious()){
7 System.out.println(it.previous());
8 }
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询