【JAVA语法】持有对象--Java中迭代器listIterator的用法

写在前面:

    我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽。同是学习的同学也同样希望互相交流,取长补短。

                                                                                                                                                      ——zsferrier@126.com

以下内容是学习《java编程思想》(《Thinking in Java》)的笔记,包括对习题的实现。

上一篇文章说到java中的迭代器Iterator只能单向移动。而ListIterator可以双向移动,不过它只能用于各种List的访问。即可以产生相对于当前位置前一个和后一个元素的索引。并且可以使用set()方法替换它访问过的最后一个元素,可以调用listIterator(n)创建一个开始就指向索引为n的元素处的ListIterator。

1.看下面一段代码:

		List<Integer> list = new ArrayList<Integer>(Arrays.asList(0,1,2,3,4,5,6,7));
		ListIterator<Integer> listIterator = list.listIterator();
		System.out.println("the next one is "+listIterator.nextIndex());
		System.out.println("the previous one is "+listIterator.previousIndex());


可以看到在迭代器为列表原点时,nextIndex为0,而previousIndex为-1(当然不建议这么去做,因为索引为-1的元素事实上已经越界了。),这说明next方法指向当前位置的元素,而previous方法指向当前位置前一个的元素。

2.set方法的使用。

用指定元素替换 nextprevious 返回的最后一个元素(可选操作)。只有在最后一次调用 nextprevious 后既没有调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。 

		List<Integer> list = new ArrayList<Integer>(Arrays.asList(0,1,2,3,4,5,6,7));
		ListIterator<Integer> listIterator = list.listIterator();
		listIterator.next();
		listIterator.set(new Integer(99));
		System.out.println(list);

这样就把next方法返回的0给替换掉了。

3.练习:创建并组装一个List<Integer>,然后创建第二个具有相同尺寸的List<Integer>,并使用ListIterator读取第一个List中的元素,然后再将他们以反序插入到第二个列表中去。

		List<Integer> list = new ArrayList<Integer>(Arrays.asList(0,1,2,3,4,5,6,7));
		List<Integer> list2 = new ArrayList<Integer>(8);
		ListIterator<Integer> listIterator = list.listIterator(8);
		while(listIterator.hasPrevious()){
			list2.add(listIterator.previous());
		}
		System.out.println(list2);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值