iterator的用法

1.什么是Iterator?

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

 
 
  • 1

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

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

 
 
  • 1
  • 2
  • 3

3.在list集合中是用Iterator

Iterator中只提供了删除的方法,如果想要在遍历的过程中添加元素可以是用ListIterator,ListIterator继承了Iterator接口,提供一下几种方法:

 
 
  • 1
  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());
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

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());
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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());  
        }  
    }  
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
                            </div>
  • 12
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值