集合框架(Java)之Iterator和ListIterator

Iterator和ListIterator

在上两篇文章中,我们介绍了ArrayList和LinkedList

ArrayList是基于数组的数据结构,增删改查都依赖Index去完成。因此修改和查看效率高,增删涉及到数组的扩容,因此效率较低。

LinkedList是基于双向链表的数据结构,增删特别快,但改和查每次都需要遍历整个链表,因此效率低。


ArrayList的遍历

package com.evan.array_list;

import java.util.ArrayList;

public class Demo {

	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		list.add("赵六");
		
		for (int i = 0; i < list.size(); i++) {
			String value = list.get(i);
			System.out.println("value at " + i + " is :" + value);
		}
		
	}

}

集合框架(Java)之Iterator和ListIterator_第1张图片


 

这篇文章我们介绍另外一种遍历方式,就是迭代器。

Iterator

package com.evan.array_list;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo {

	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		list.add("赵六");
		
//		for (int i = 0; i < list.size(); i++) {
//			String value = list.get(i);
//			System.out.println("value at " + i + " is :" + value);
//		}
		
		for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
			String value = iterator.next();
			System.out.println("value is :" + value);
		}
	}

}

集合框架(Java)之Iterator和ListIterator_第2张图片

 Iterator常用方法:

  1. hasNext() 是否有下一个元素
  2. next() 获取下一个元素
  3. remove() 删除当前元素

Iterator可以作用于List、Set和Map集合上,可以用来获取元素以及删除元素,在LinkedList和Set中,只可以用Iterator进行遍历


在List的体系下,还有一种特有的迭代器 ListIterator

ListIterator相对于Iterator,还含有特有的函数

  1. hasNext() 是否有下一个元素
  2. hasPreview() 是否有上一个元素
  3. next() 获取下一个元素
  4. preview() 获取上一个元素
  5. add() 增加元素
  6. set() 重置元素
  7. remove() 删除元素
  8. nextIndex() 下一个标记
  9. previewIndex() 上一个标记

你可能感兴趣的:(Java)