java Iterator.remove()实例方法分析
作者:ethanchan 发布时间:2022-05-01 15:56:01
标签:java,Iterator.remove()
今天看到,java的NIO里面的SelectionKey,处理完key后,调用keyIterator.remove(); 对Iterator的remove()方法不是很熟悉,小测试了下,代码如下:
List<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String str = i + "";
list.add(str);
}
java.util.Iterator it = list.iterator();
for (int i = 0; i < 5; i++) {
System.out.println((String) it.next());
}
it.remove();
System.out.println("////////////////////////");
it = list.iterator();
while (it.hasNext()) {
System.out.println((String) it.next());
}
0
1
2
3
4
////////////////////////
0
1
2
3
5
6
7
8
9
很明显,remove()去掉的是当前it.next()返回的元素.到这里有个疑问,这个remove之后对下面的元素遍历有没有影响呢?又测试下,代码如下:
List<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String str = i + "";
list.add(str);
}
java.util.Iterator it = list.iterator();
// for (int i = 0; i < 5; i++) {
// System.out.println((String) it.next());
// }
// it.remove();
// System.out.println("////////////////////////");
// it = list.iterator();
// while (it.hasNext()) {
// System.out.println((String) it.next());
//
// }
while (it.hasNext()) {
System.out.println((String) it.next());
it.remove();
}
运行代码如下:
0
1
2
3
4
5
6
7
8
9
remove()后,对下面的元素遍历没影响 .完毕!
实例扩展:
@Test
public void tt(){
List<String> list = new ArrayList<String>();
list.add( "0" );
list.add( "1" );
list.add( "2" );
list.add( "3" );
list.add( "4" );
list.add( "5" );
list.add( "6" );
list.add( "7" );
list.add( "8" );
list.add( "9" );
list.add( "10" );
list.add( "11" );
list.add( "12" );
list.add( "13" );
list.add( "14" );
list.add( "15" );
list.add( "16" );
list.add( "17" );
list.add( "18" );
list.add( "19" );
list.add( "20" );
int i = 0;
Iterator<String> it = list.iterator();
while ( it.hasNext() ) {
String str = it.next();
if ( i % 2 == 0 ) {
System.out.println( i + "===" + str );
it.remove();
}
i++;
}
for ( String str : list ) {
System.out.println( str );
}
}
来源:https://www.cnblogs.com/ethanchan/archive/2010/02/23/1672235.html


猜你喜欢
- 分布式限流-单位时间多实例多线程访问次数限制接前面聊一聊redisson及优雅实现 和 说一说spring boot优雅集成redisson
- 本文实例为大家分享了Java实现高校教务系统的具体代码,供大家参考,具体内容如下需求:建立一个教务管理系统,为学生和教师提供不同的功能//简
- 前言最近跟着视频在做一个分布式项目练练手,然后那个老师就说了下freemakker生成静态页面后,然后讲了下思路:添加商品时生成对应的商品静
- Flutter页面在软键盘弹出的时候,可以设置 Scaffold 的 resizeToAvoidBottomInset 属性来设置
- 前言公司的邮件系统用的是 * 的 Lotus notes, 你敢信?最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前
- 目前常用的ORM框架有 Mybatis(batis)、MybatisPlus,Hibernate、Jpa等几个框架,今天就简单介绍一下搭建M
- 传统界面的布局方式总是行列分明、坐落有序的,这种布局已是司空见惯,在不知不觉中大家都已经对它产生了审美疲劳。这个时候瀑布流布局的出现,就给人
- 最近在做一个项,有一个收藏的功能。后来看到了一点资讯的收藏动画,感觉不错,所有自己就实现了一下。这是效果:附上完整的代码,其中Animati
- 一、前言java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区
- 本文介绍如何在springboot中使用默认的spring cache,声明式缓存Spring 定义 CacheManager 和 Cach
- 在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,费时费力,写了个脚本,简单清除掉目录下所有的文件的头部版权信息。# -*- co
- 本文实例为大家分享了Android实现一个仿支付宝支付密码的输入框,主要实现如下:PasswordView.javapackage com.
- 猜数字游戏你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜
- 在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义publi
- Semaphore也是一个同步器,和前面两篇说的CountDownLatch和CyclicBarrier不同,这是递增的,初始化的时候可以指
- Java持久化框架:Hibernate与MybatisHibernate和Mybatis是两个Java持久化框架,用于将Java对象映射到关
- 一般在使用RecyclerView的时候不免要修改RecyclerView的数据,使用notifyDataSetChanged()来刷新界面
- 一:工具栏(JToolBar)代码示例:import javax.swing.*;//工具栏的使用案例public class JToolB
- 最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不
- Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribb