Iterator remove()详解

article/2025/9/24 19:41:23

转自:http://blog.51cto.com/tianxingzhe/1693218

 

一、Iterator的API
      关于Iterator主要有三个方法:hasNext()、next()、remove()
      hasNext:没有指针下移操作,只是判断是否存在下一个元素
      next:指针下移,返回该指针所指向的元素
     remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素
二、迭代器原理
     

wKioL1XwANyyvfvxAAAlGGiK240164.jpg

     1、当创建完成指向某个集合或者容器的Iterator对象是,这是的指针其实指向的是第一个元素的上方,即指向一个           空
     2、当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针
     3、当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异常。
     4、remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常。

三、使用中注意的问题

Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则
 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。

  
1.如果当前单个线程在更改容器(add, delete....),那么迭代的时候采用iterator.remove()方法可以确保迭代器在查找next的时候,指针不会丢失。
while(iterator.hasNext() {
     Object item = iterator.next();
     iterator.remove();   //避免ConcurrentModificationException
     ......
}


2.如果当前有多个线程在对容器进行操作,例如一个线程正在向容器中写数据,而另一个线程在迭代此容器,这时候就必须考虑并发下的线程安全问题。ConcurrentModificationException官方文档第一句就指出:
This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.
这时候可以采用java.util.concurrent包下面的线程安全的容器解决此异常。


http://chatgpt.dhexx.cn/article/WLAaODjP.shtml

相关文章

VLAN命令行配置

VLNA配置任务概览 各配置任务间的逻辑关系: VLAN配置任务概览: 配置任务描述划分VLAN创建并划分VLAN,将没有二层互通需求的用户进行隔离,可增强网络的安全性、减少广播流量,同时也减少了广播风暴的产生。配置通过VLA…

VLAN配置命令

VLAN作用 分割广播域 VLAN分类 静态VLAN 基于端口划分 动态VLAN 基于MAC地址划分 VLAN范围 0-4095 共4096个vlanID 0与4095系统保留 1-4094可用 VLAN配置命令 VLAN基础配置代码 添加vlan(2-4094) vlan 10 删除vlan undo vlan 10 批量增加 vlan batch …

华为 -VLAN配置

按照实验拓扑图接线。 配置PC1:IP(192.168.1.1/24),PC2:IP(192.168.2.1/24)。测试PC1和PC2的连通性:用PC1去PingPC2,查看Ping的结果,并解释原因。 PC1和PC2在不同的网段,不能ping通 配置PC1&…

华为交换机vlan配置

拓扑图: 配置命令: sw1: sys sys sw1 vlan 10 vlan 20 int e0/0/1 port link-type access port default vlan 10 int e0/0/2 port link-type access port default vlan 20 int e0/0/3 port link-type trunk port trunk allow vlan 10 20sw2: sys sy…

ensp交换机vlan配置

交换机 一、VLAN1、VLAN的概念2、优势3、VLAN的种类4、VLAN的范围5、VLAN标识6、IEEE802.1q工作原理帧格式 二、交换机命令配置1、华为交换机链路类型2、添加VLAN 一、VLAN 1、VLAN的概念 VLAN(Virtual Local Area Network)即虚拟局域网,是…

eNSP VLAN配置

按如上拓扑图进行配置: 1、按拓扑图标记,划分VLAN,分配固定IP 2、开启两个路由器的DHCP服务,分配所有客户机IP地址 3、实现全网互通 一、划分VLAN,分配固定IP 因为两个路由器连接不同的交换机,所以左右两…

华三vlan配置

基于MAC地址划分vlan 配置思路: 创建VLAN 100、VLAN 200。 配置Device A和Device C的上行端口为Trunk端口,并允许VLAN 100和VLAN 200的报文通过。 配置 Device B 的下行端口为Trunk端口,并允许VLAN 100和VLAN 200的报文通过;上行…

计算机网络配置——VLAN的配置

一、实验目的 了解VLAN的作用和用途;掌握单一交换机与跨交换机划分VLAN的配置方法; 理解VLAN标签添加和删除的过程。 二、实验任务 在思科模拟器中实现下图所示的VLAN的配置: 使用ping命令验证配置结果,并完成实验报告。 二、…

H3C_交换机_Vlan配置

奶奶说,没事不要和小学生比爹。 一、实验环境 HCL v2.1.2win7操作系统 二、拓扑结构 三、模拟环境 一般用于企业网络或者需要对局域网进行逻辑区域划分的网络。不同vlan间一般情况是不能相互访问的,这样就可以减少广播和提高网络安全性。 四、介绍 …

华为交换配置之VLAN配置。

每天进步一点点! 08 vlan 配置与原理 vlan 虚拟局域网 作用:实现同一vlan的设备才可以进行通信,不同vlan不能通信。 vlan tag:接口配置vlan后发生数据会携带相应的vlan tag(vlan 标签) VLAN ID&#…

VLAN,简单配置vlan

VLAN 在交换机中工作 分割广播域 物理分割--------子网掩码划分 逻辑分割---------VLAN划分 VLAN的优势 控制广播 增强网络安全性 简化网络管理 VLAN的种类 静态VLAN:基于端口划分静态VLAN 动态VLAN:基于MAC地址划分动态VLAN VLAN的ID范围 0~4095共4096…

VLAN基本配置

目录 一、VLAN概述 1、VLAN概念 1)分隔广播域的两种方法 2、VLAN优势 1)控制广播 2)增强网络安全性 3)简化网络管理 3、VLAN的种类 二、静态VLAN的配置 1、VLAN的范围 2、VLAN基本配置 1)创建VLAN 2&#…

交换机VLAN基本配置

一、实验目的 (1)掌握交换机路由器基本配置。 (2)掌握VLAN基本配置。 二、实验环境 (1)4人1组,每组运行Windows 2008 Server/Windows XP/Windows 7/ Windows 10 操作系统的PC机4台&#xff0c…

华为ENSP的VLAN配置

华为ENSP vlan配置实验 实验一 实现同一个vlan下面的不同网段的ping通 网络拓扑图如下: ①配置两个pc端的ip地址和子网掩码、网关 ②对交换机进行vlan的配置 1)创建vlan2 [SA]vlan 2 [SA-vlan2]quit2)将两个网段的网关都加入vlan2 中&am…

VLAN简单配置详细过程

实验拓扑图 一、PC的 ip配置 PC1 Ip&#xff1a;192.168.1.1/24 PC2 Ip&#xff1a;192.168.1.2/24 PC3&#xff1a; Ip:192.168.1.3/24 PC4&#xff1a; Ip&#xff1a;192.168.1.4/24 二、路由器中命令 AR1中指令 <Huawei>undo t m …

VLAN配置

实验效果&#xff1a;相同VLAN能通讯&#xff0c;不同VLAN不能通讯 1.配置拓扑图如下&#xff1a;&#xff08;两台交换机和四台主机终端设备&#xff09; 2.四台终端设备设置IP地址和网关 PC0 IP地址&#xff1a;192.168.2.11 网关 192.168.2.1 PC1 IP地址&#xff1a;192.…

VLAN(含配置命令行)

一、VLAN的概念及优势 虚拟局域网&#xff08;VLAN&#xff09;是一组逻辑上的设备和用户&#xff0c;这些设备和用户并不受物理位置的限制&#xff0c;可以根据功能、部门及应用等因素将它们组织起来&#xff0c;相互之间的通信就好像它们在同一个网段中一样&#xff0c;由此得…

VLAN简单配置

VLAN——虚拟局域网 虚拟局域网&#xff08;Virtual Local Area Network&#xff09;简写VLAN vlan的作用&#xff1a;划分广播域&#xff0c;控制广播消息传递范围。将一个局域网划分成多个VLAN&#xff0c;减少广播所占用的带宽。 开始配置 软件&#xff1a;Cisco Packet …

【网络】VLAN 及其配置详解

起序&#xff1a;网络中存在的大量的广播&#xff0c;这些广播有很多的危害。比如&#xff1a; 大规模耗用链路带宽&#xff0c;使得正常数据不能得到有效传输。造成交换机资源被占用&#xff0c;导致死机。 解决 广播 的常用的方法就是 VLAN &#xff0c;下面会介绍几种方法…

VLAN的配置

目录 一、vlan的概念及优势 二、静态vlan的配置 1、首先设置四台主机的IP地址、子网掩码 2、SW1的vlan创建 3、设置交换机1的接口模式 4、通过ping检测 三、trunk的配置 1、首先配置四台主机和两台服务器的IP地址、子网掩码 2、SW1、SW2的VLAN创建 ​编辑 3、设置交…