java迭代器删除元素_java迭代器中删除元素的实例操作详解
java迭代器中删除元素的实例操作详解
2021-01-21 16:40:08
我们知道通过Iterator,可以对集合中的元素进行遍历。那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以。在Iterator下有一个remove函数,专门
我们知道通过Iterator,可以对集合中的元素进行遍历。那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以。在Iterator下有一个remove函数,专门用于删除的操作。下面我们就remove进行讲解,然后对删除元素方法进行说明,最后带来实例的展示。
1.Iterator中的remove
void remove():删除迭代器刚越过的元素
从基础集合中移除这个迭代器返回的最后一个元素(可选操作)。两个线程中都删除,保证线程的同步。
2.删除元素说明
(1)迭代器遍历方式, 适用于连续内存存储方式,比如数组、 ArrayList(其实 ArrayList底层实现也是数组形式)。 缺点是只能从头开始遍历, 优点是可以边遍历边删除
(2)arraylist每次遍历的时候会去判断该集合是否被修改过,调用的方法是checkForComodification()。 如果被修改过ConcurrentModificationException异常。
(3)如何判断是否修改呢,主要是通过维护2个变量来实现,modCount记录了修改次数,expectedModCount记录期望修改次数。 通过iterator.remove()进行的删除操作,会同时修改modCount、ConcurrentModificationException; 而通过list.remove(object/index),则只会修改modCount。 这也是fast-fail机制
3.删除实例
Iterator it=list.iterator();
while(it.hasNext()){
Object e=it.next();
if("b".equals(e)){
it.remove();
}
}
System.out.println(list);
Iterator中的remove()实例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorRemoveDemo {
public static void main(String[] args) {
List list = new ArrayList(5);
for (int i = 0; i < 5; i++) {
list.add(i);
}
System.out.println(list);
https:// 移除最后访问的元素
iterator.next();
iterator.next();
iterator.remove();
System.out.println(list);
}
}
/*输出:
[0, 1, 2, 3, 4]
[0, 2, 3, 4]
*/
原文链接:http://www.yuepc.com/a/3289.html
http://www.yuepc.com 为 “沈一博客” 唯一官方服务平台,请勿相信其他任何渠道。
标签:
相关文章
评论列表
java迭代器删除元素_java迭代器中删除元素的实例操作详解相关推荐
- java 数组去重排序_Java实现的数组去重与排序操作详解
本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...
- yii mysql 事务处理_Yii2中事务的使用实例代码详解
前言 一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题. 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全 ...
- vue build text html,Vue中v-text / v-HTML使用实例代码详解_放手_前端开发者
废话少说,代码如下所述: /p> 显示123 /p> 补充:vuejs {{}},v-text 和 v-html的区别 {{message}} let app = new Vue({ el ...
- java 中数组中删除元素_java数组中删除元素的操作
我们在学习数组的开始,就明确过初始的长度是不可变化的.但是在实际的使用中,难免会涉及到对数组的改动.本篇我们带来的是在数组中删除元素的方法:remove和索引.相信这两种概念大家都不陌生,那么结合了数 ...
- java全栈系列之JavaSE--java中的多维数组的详解026
多维数组 多维数组可以看成是数组的数组,二维数组是一个特殊的一维数组,其中的每一个元素都是一个一维数组 二维数组的定义格式: 定义一维数组的时候类型后面是一个[ ],而二维数组在类型后面跟上两个[ ] ...
- java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例
java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...
- python输出变量代码_Python中变量的输入输出实例代码详解
1.变量的输入: input函数: input() input("请输入银行卡密码") password = input("请输入银行卡密码") 变量名 = i ...
- java修饰方法_java接口中方法、属性修饰符详解
java接口的修饰符:abstract(inteeface本身就是抽象的,加不加abstract都一样). 接口中字段的修饰符:public static final(默认不写) 如下解释: publ ...
- java 双声道音频_java实现切割wav音频文件的方法详解【附外部jar包下载】
本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronso ...
最新文章
- mysqlimport命令
- MongoDB命令及SQL语法对比
- 【转】从网页上下载控件时制作CAB包的方法
- Java 到底是值传递还是引用传递
- Python 函数缓存 (Function caching)
- 鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...
- q87主板支持cpu型号_网络上那些300多元的微星B365M主板到底是真货假货?价格便宜一半...
- mysql设置空值显示null_mysql的空值与NULL的区别
- 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
- 正则表达式学习笔记001--点号匹配
- Flash/Flex学习笔记(50):3D线条与填充
- Web服务器 之 关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明
- linux 设置时间
- 图的邻接矩阵求图的出度,入度,可达矩阵,判断强连通,弱连通,单向连通(C++,vs2017)
- 修改Android模拟器存储位置,更改AndroidAVD模拟器创建路径位置的方法
- 【OpenCV】 300行写出全能扫描王
- 不熟悉 excel,使用 python 将数据按要求转置
- Android Room 数据库详解
- Unity-Live2d(鼠标拖拽触发动作变化)
- Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()