java数据结构08_ListIterator迭代器

ListIterator 是 Iterator 的子接口,但它比 Iterator 更加的强大,提供了更多在迭代过程中使用的方法。

ListIterator 接口常用方法:

boolean hasNext(); 以正向遍历列表时,判断迭代器后面是否还有元素。
Object next(); 返回列表中ListIterator指向位置后面的元素。
boolean** hasPrevious(); 以逆向遍历列表,判断迭代器前面是否还有元素。
Object** previous(); 返回列表中ListIterator指向位置前面的元素。
void** remove(); 从列表中删除next()或previous()返回的最后一个元素。
void** set(Object e); 从列表中将next()或previous()返回的元素更改为指定元素。
void** add(Object e); 将指定的元素插入列表,插入位置为迭代器当前位置之前。

ListIterator 接口获取方式:

public ListIterator listIterator();返回列表中的列表迭代器,游标位置默认为0。

public ListIterator listIterator(final int index);从列表中的指定位置开始,返回列表中的元素(游标位置为index)的列表迭代器。

【示例】 ListIterator迭代ArrayList元素

// 创建集合对象
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
// 获取容器的迭代器对象
ListIterator iter1 = list.listIterator();
// 迭代器的使用,正向遍历集合元素
while(iter1.hasNext()) {
	// 获取元素
	System.out.println(iter1.next());
}
// 获取容器的迭代器对象
ListIterator iter2 = list.listIterator(list.size());
// 迭代器的使用,倒序遍历集合元素
while(iter2.hasPrevious()) {
	// 获取元素
	System.out.println(iter2.previous());
}

Iterator只提供了删除元素的方法remove,如果我们想要在遍历的时候添加元素怎么?

通过 ListIterator 迭代器来操作元素,ListIterator接口允许程序员按照任一方向遍历列表,并且允许迭代期间操作集合中的元素。

【示例】迭代过程中对ArrayList元素操作

public class Test {
	public static void main(String[] args) {
		// 创建ArrayList集合
		LinkedList<Integer> list = new LinkedList<Integer>();
		list.add(11);
		list.add(22);
		list.add(33);
		// 获取容器的迭代器对象
		ListIterator<Integer> it = list.listIterator();
		while(it.hasNext()) {
			Integer value = it.next();
			if(value < 20) {
				it.remove(); // 删除当前迭代的这个元素
			} else {
				it.add(444); // 在当前元素后面添加一个元素
			}
		}
	}
}

Iterator和ListIterator的区别

  1. Iterator应用于Set和List集合及其子类型,但是ListIterator只能用于List及其子类型。

  2. Iterator和ListIterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。

  3. Iterator和ListIterator都有remove()方法,但是ListIterator还有add()方法和set()方法。

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

发布了35 篇原创文章 · 获赞 0 · 访问量 360

猜你喜欢

转载自blog.csdn.net/zhoujunfeng121/article/details/104535605
今日推荐