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

写在前面:

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

                                                                                                                                                      ——[email protected]

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

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

1.看下面一段代码:

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

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

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

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


你可能感兴趣的:(JAVA语法,JAVA,JAVA迭代器,ListIterator)