迭代器在遍历元素时要注意的事项

package com.javaxxz.test;

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

/**
 *迭代器在遍历元素时要注意的事项:
 *   1、在迭代器迭代元素的过程中(迭代器一旦创建到使用结束的时段),
 *       不允许使用集合对象改变集合中的元素个数,
 *       如果需要添加或者删除只能使用迭代器的方法进行操作。
 *
 *   2、如果使用过了集合对象改变集合中元素的个数,
 *       那么就会出现java.util.ConcurrentModificationException异常
 */
public class Demo5 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("张三");
        list.add("李四");
        list.add("王五");

        ListIterator it = list.listIterator();
        while (it.hasNext()) {
            System.out.print(it.next() + ",");
            // 使用集合对象改变集合中元素的个数
            // list.add("赵六"); // 抛出java.util.ConcurrentModificationException
            // 能使用迭代器的方法进行操作
            it.add("赵六");
        }
        System.out.println();
        System.out.println("现在list中的元素:" + list);

        /*
        ListIterator it2 = list.listIterator(); // 迭代器创建
        list.add("test"); // 迭代器创建到使用期间,集合对象改变集合中的元素个数。抛出异常
        it2.next(); // 迭代器使用
        */
    }
}

运行结果

张三,李四,王五,
现在list中的元素:[张三, 赵六, 李四, 赵六, 王五, 赵六]

 

转载于:https://my.oschina.net/zhui666/blog/1799289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
迭代器是一种用于遍历容器中元素的工具。对于vector容器,可以使用迭代器进行遍历。在C++中,可以通过以下方式使用迭代器遍历vector: ```cpp #include <iostream> #include <vector> using namespace std; void traverseVector(vector<int> v) { vector<int>::iterator it = v.begin(); for(; it != v.end(); ++it) { cout << (*it) << " "; } cout << endl; } ``` 以上代码中,我们首先定义了一个vector容器v,并通过v.begin()获取到vector的起始迭代器,然后通过v.end()获取到vector的结束迭代器。接着,我们使用一个迭代器it来遍历vector,通过(*it)来访问迭代器指向的元素。最后,我们输出遍历结果。 请注意,这里的参数v是按值传递的,因此在函数内部对v进行操作不会影响到原始的vector容器。 希望这个回答对您有帮助! #### 引用[.reference_title] - *1* [vector的迭代器遍历](https://blog.csdn.net/wangwenjing90/article/details/81257553)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [迭代器iterator遍历集合](https://blog.csdn.net/m0_46287385/article/details/124962963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值