迭代器ListIterator使用及并发修改List集合

来源:互联网 发布:java堆排序 编辑:程序博客网 时间:2024/06/05 20:39


有一个集合,判断里面有没有"world"这个元素,如果有,我就添加一个"java"元素,请写代码实现。

接口 ListIterator<E>所有超级接口: Iterator<E> 
public interface ListIterator<E> extends Iterator<E>系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。
ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置,

E previous()返回列表中的前一个元素。可以重复调用此方法来迭代列表,或混合调用 next 来前后移动(注意交替调用 next 和 previous 将重复返回相同的元素)。 返回:列表中的上一个元素。 抛出: NoSuchElementException - 如果没有可迭代的上一个元素。boolean hasPrevious()如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。        (换句话说,如果 previous 返回一个元素而不是抛出异常,则返回 true)。 返回:如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。

import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class I {@SuppressWarnings({ "rawtypes", "unchecked" })public static void main(String[] args) {List list = new ArrayList();list.add("a");//Object obj = new String();list.add("b");list.add("world");list.add("c");list.add("d");list.add("e");/*Iterator it = list.iterator();//获取迭代器while(it.hasNext()) {//判断集合中是否有元素String str = (String)it.next();//向下转型if("world".equals(str)) {list.add("java");//遍历的同时在增加元素,并发修改ConcurrentModificationException}}*///如果想在遍历的过程中添加元素,可以用ListIterator中的add方法ListIterator lit = list.listIterator();//获取迭代器(List集合特有的)while(lit.hasNext()) {String str = (String)lit.next();//向下转型if("world".equals(str)) {lit.add("java");}}System.out.println(lit);ListIterator li = list.listIterator();//获取迭代器while(li.hasNext()) {System.out.println(li.next());//获取元素并将指针向后移动}System.out.println("-----------------");while(li.hasPrevious()) {System.out.println(li.previous()); //获取元素并将指针向前移动}}}





1 0
原创粉丝点击