我是靠谱客的博主 欢喜老鼠,最近开发中收集的这篇文章主要介绍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>

最后

以上就是欢喜老鼠为你收集整理的iterator的用法的全部内容,希望文章能够帮你解决iterator的用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部