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迭代器中删除元素的实例操作详解相关推荐

  1. java 数组去重排序_Java实现的数组去重与排序操作详解

    本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...

  2. yii mysql 事务处理_Yii2中事务的使用实例代码详解

    前言 一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题. 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全 ...

  3. vue build text html,Vue中v-text / v-HTML使用实例代码详解_放手_前端开发者

    废话少说,代码如下所述: /p> 显示123 /p> 补充:vuejs {{}},v-text 和 v-html的区别 {{message}} let app = new Vue({ el ...

  4. java 中数组中删除元素_java数组中删除元素的操作

    我们在学习数组的开始,就明确过初始的长度是不可变化的.但是在实际的使用中,难免会涉及到对数组的改动.本篇我们带来的是在数组中删除元素的方法:remove和索引.相信这两种概念大家都不陌生,那么结合了数 ...

  5. java全栈系列之JavaSE--java中的多维数组的详解026

    多维数组 多维数组可以看成是数组的数组,二维数组是一个特殊的一维数组,其中的每一个元素都是一个一维数组 二维数组的定义格式: 定义一维数组的时候类型后面是一个[ ],而二维数组在类型后面跟上两个[ ] ...

  6. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

  7. python输出变量代码_Python中变量的输入输出实例代码详解

    1.变量的输入: input函数: input() input("请输入银行卡密码") password = input("请输入银行卡密码") 变量名 = i ...

  8. java修饰方法_java接口中方法、属性修饰符详解

    java接口的修饰符:abstract(inteeface本身就是抽象的,加不加abstract都一样). 接口中字段的修饰符:public static final(默认不写) 如下解释: publ ...

  9. java 双声道音频_java实现切割wav音频文件的方法详解【附外部jar包下载】

    本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronso ...

最新文章

  1. mysqlimport命令
  2. MongoDB命令及SQL语法对比
  3. 【转】从网页上下载控件时制作CAB包的方法
  4. Java 到底是值传递还是引用传递
  5. Python 函数缓存 (Function caching)
  6. 鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...
  7. q87主板支持cpu型号_网络上那些300多元的微星B365M主板到底是真货假货?价格便宜一半...
  8. mysql设置空值显示null_mysql的空值与NULL的区别
  9. 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
  10. 正则表达式学习笔记001--点号匹配
  11. Flash/Flex学习笔记(50):3D线条与填充
  12. Web服务器 之 关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明
  13. linux 设置时间
  14. 图的邻接矩阵求图的出度,入度,可达矩阵,判断强连通,弱连通,单向连通(C++,vs2017)
  15. 修改Android模拟器存储位置,更改AndroidAVD模拟器创建路径位置的方法
  16. 【OpenCV】 300行写出全能扫描王
  17. 不熟悉 excel,使用 python 将数据按要求转置
  18. Android Room 数据库详解
  19. Unity-Live2d(鼠标拖拽触发动作变化)
  20. Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()

热门文章

  1. mysql面试指南百度云下载_MySQL面试指南,资源教程下载
  2. 网站建设对企业有什么作用及好处
  3. python 数组字典定义_使用python数组字典
  4. 零基础学习平面设计一般需要多久?有前途吗?
  5. 解决Hbuilder打包的app返回键直接退出
  6. Java设计模式 —— 组合模式(Composite)
  7. 详解Linux内核红黑树算法的实现
  8. 查看修改MySQL表结构命令
  9. SOLIDWORKS如何快速制作库特征
  10. 2021广东工业智造创新大赛-瓷砖瑕疵检测方案