Iterator迭代器的使用方法

本文详细介绍了Java中Iterator接口及其子接口ListIterator的基本概念和使用方法,包括如何使用Iterator进行集合元素的迭代和删除操作,以及如何利用ListIterator进行更复杂的列表操作,如插入和更新元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是Iterator?

Iterator提供了对集合迭代的方法,每个集合都可以返回一个Iterator实例,迭代器可以在迭代的过程中删除集合的底层元素,但是不能直接调用集合的remove()方法移除,可以使用Iterator中的remove()方法进行移除。

2.在Iterator接口中定义了三个方法:

- hasNext()    如果有元素则继续迭代,返回true
- next()       返回迭代的元素
- remove()     移除返回的元素

3.在list集合中是用Iterator

Iterator中只提供了删除的方法,如果想要在遍历的过程中添加元素可以是用ListIterator,ListIterator继承了Iterator接口,提供一下几种方法:
  1. void hasPrevious() 判断游标前面是否有元素;
  2. Object previous() 返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;
  3. int nextIndex() 返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;
  4. int previousIndex() 返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;
  5. void add(E) 在游标 前面 插入一个元素,注意,是前面
  6. void set(E) 更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;
  7. void remove() 删除迭代器最后一次操作的元素,注意事项和 set 一样。
import com.sun.media.sound.SoftTuning;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/**
 * Created by lixiaoshuang on 2018/1/29.
 */
public class Iterator {
    public static void main(String[] args) {
        //使用iterator移除元素
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        java.util.Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            if (iterator.next().equals(2)) {
                iterator.remove();
            }
        }
        System.out.println(list.toString());

        //使用ListIterator进行操作
        List list2 = new ArrayList();
        list2.add(4);
        list2.add(5);
        list2.add(6);
        ListIterator listIterator = list2.listIterator();
        while (listIterator.hasNext()) {
            Object next = listIterator.next();
            if (next.equals(5)) {
                //移除5,并在5的位置上添加一个4
                listIterator.remove();
                listIterator.add(4);
                System.out.println("判断游标前边是否有元素:" + listIterator.hasPrevious());
                System.out.println("返回游标前边的索引元素:" + listIterator.previousIndex());
                System.out.println("返回游标后边的索引元素:" + listIterator.nextIndex());
            }
            //更新68
            if (next.equals(6)) {
                listIterator.set(8);
            }
        }
        System.out.println(list2.toString());
    }
}

4.在set集合中使用Iterator

public class SetIterator {
    public static void main(String[] args){
        Set set = new HashSet();
        set.add(1);
        set.add(2);
        set.add(3);
        java.util.Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            if (iterator.next().equals(2)){
                iterator.remove();
            }
        }
        System.out.println(set.toString());
    }
}

5.在Map集合中使用Iterator

public class MapOutput {  

    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Map<Integer,String> map = new HashMap<Integer,String>();  
        map.put(1, "aaa");  
        map.put(2, "bbb");  
        map.put(3, "ccc");  
        map.put(4, "ddd");  

        Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator();  
        while(it.hasNext()){  
            Map.Entry<Integer,String> entry=it.next();  
            System.out.println("key="+entry.getKey()+","+"value="+entry.getValue());  
        }  
    }  
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值