迭代器

迭代器Iteartor接口中,有以下3个方法:

1.hasNext() 该方法检查序列中是否还有元素。

2.next() 获取迭代过的一个元素。

3.remove()  移除迭代器返回的最后一个元素(将迭代器新近返回的元素删除)。

 

只有当next执行完后,才能调用remove函数。

1.比如你要删除第一个元素,不能直接调用remove(),而要先next一下;

2.在没有先调用next()就调用remove()是会抛出异常的。

 

 

迭代器主要的用法是:首先用hasNext()作为循环条件,再用next()方法得到每一个元素,最后在进行相关的操作。

注意一点:

迭代出来的元素都是原来集合元素的拷贝。

Java集合中保存的元素实质是对象的引用,而非对象本身。

public class DieDaiQi {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        //创建容器的迭代器,这个迭代器只可以给list使用
        Iterator<String> iterator=list.iterator();
        while(iterator.hasNext()){ //判断iterator是否还有元素
            //将迭代器的下标移动一位,并得到当前位置的元素值
           System.out.println(iterator.next()); 
        }
    }
}

使用for循环还是迭代器Iterator对比:

采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法,因此在ArrayList里,for循环较快。

采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法,因此在LinkedList里,使用iterator较快。

从数据结构角度分析,for循环适合访问顺序结构,可以根据下标快速获取指定元素.而Iterator 适合访问链式结构

使用 Iterator 的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现(只要它实现了 java.lang.Iterable 接口),

如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 Set 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样.(还是说明了一点遍历和集合本身分离了)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值