java Iterator.remove()实例方法分析

 更新时间:2021年01月21日 15:54:52   作者:ethanchan  
在本篇文章里小编给大家整理了一篇关于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 );
		}

	}

到此这篇关于java Iterator.remove()实例方法分析的文章就介绍到这了,更多相关java Iterator.remove()方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring boot 整合 Redisson实现分布式锁并验证功能

    Spring boot 整合 Redisson实现分布式锁并验证功能

    这篇文章主要介绍了Spring boot 整合 Redisson实现分布式锁并验证,redisson是官方推荐的分布式锁实现方案,采用redis自身的原子命令和lua脚本来实现,需要的朋友可以参考下
    2022-05-05
  • Java并发编程service层处理并发事务加锁可能会无效问题

    Java并发编程service层处理并发事务加锁可能会无效问题

    这篇文章主要介绍了Java并发编程service层处理并发事务加锁可能会无效问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • mybatis Example Criteria like 模糊查询问题

    mybatis Example Criteria like 模糊查询问题

    这篇文章主要介绍了mybatis Example Criteria like 模糊查询问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MyBatis深入解读动态SQL的实现

    MyBatis深入解读动态SQL的实现

    动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦
    2022-04-04
  • Hibernate一级缓存和二级缓存详解

    Hibernate一级缓存和二级缓存详解

    今天小编就为大家分享一篇关于Hibernate一级缓存和二级缓存详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java Socket编程笔记_动力节点Java学院整理

    Java Socket编程笔记_动力节点Java学院整理

    Socket对于我们来说就非常实用了。下面是本次学习的笔记。主要分异常类型、交互原理、Socket、ServerSocket、多线程这几个方面阐述
    2017-05-05
  • Java实现帧动画的实例代码

    Java实现帧动画的实例代码

    这篇文章主要介绍了Java实现帧动画的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Java通过Lambda函数的方式获取属性名称

    Java通过Lambda函数的方式获取属性名称

    这篇文章主要介绍了通过Lambda函数的方式获取属性名称,实现步骤是通过定义一个函数式接口, 用来接收lambda方法引用,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Spring Boot集成Spring Cache过程详解

    Spring Boot集成Spring Cache过程详解

    这篇文章主要介绍了Spring Boot集成Spring Cache过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java Iterator接口遍历单列集合迭代器原理详解

    Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论