• 简介 (Introduction):

    • 背景
      在使用线程中添加list的元素时,使用add或remove就会产生异常.

    • 分析
      该list每当删除/添加一个元素时,集合的size方法的值都会减小1,这将直接导致集合中元素的索引重新排序,进一步说,就是剩余所有元素的索引值都减一,而for循环语句的局部变量i扔然在递减,这将导致删除/添加操作发生跳跃,从而都是删除或增加的问题.

    • 快速上手(Getting Started)

      方法一:
      list转化为iterator

      1 Iterator<String> iterator = stringList.iterator();

      测试:

       1        String[] strings = {"A","B","C","D"};
      2
      3 List<String> stringList = new ArrayList<>();
      4
      5 Iterator<String> iterator = stringList.iterator();
      6
      7
      8 while (iterator.hasNext()) {
      9
      10 String next = iterator.next();
      11
      12 if(next.equals(strings[0])){
      13 iterator.remove();
      14 }
      15
      16 }

      方法二:
      逆向for循环

      1
      2 List<String> stringList = new ArrayList<>();
      3
      4 for (int i = stringList.size() - 1; i > -1; i--) {
      5
      6 stringList.add("E");
      7 }
  • 环境设置 (Prerequisite):

    • 环境
      JDK1.8
    • 配置
      IDEA 2019
    • 存在问题
      暂无

  • 进阶篇 (Advanced):

    研究中 ......

线程中使用for循环的add或remove方法的两种方案的更多相关文章

  1. TMsgThread, TCommThread -- 在delphi线程中实现消息循环

    http://delphi.cjcsoft.net//viewthread.php?tid=635 在delphi线程中实现消息循环 在delphi线程中实现消息循环 Delphi的TThread类使 ...

  2. TMsgThread, TCommThread -- 在delphi线程中实现消息循环(105篇博客,好多研究消息的文章)

    在delphi线程中实现消息循环 在delphi线程中实现消息循环 Delphi的TThread类使用很方便,但是有时候我们需要在线程类中使用消息循环,delphi没有提供.   花了两天的事件研究了 ...

  3. Looper.loop() android线程中的消息循环

    Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Loope ...

  4. java线程中的sleep/wait/notify/yield/interrupt方法 整理

    java线程中的sleep/wait/notify/yield/interrupt方法 sleep 该方法能够使当前线程休眠一段时间 休眠期间,不释放锁 休眠时间结束之后,进入可执行状态,加入到线程就 ...

  5. 在Activity中响应ListView内部按钮的点击事件的两种方法!!!

    在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...

  6. [置顶] 有关ListIterator接口的add与remove方法探究

    ListIterator接口继承自Iterator接口,新增了add()等方法. 关于ListIterator的add()方法的作用(接口是没有方法实现的,但其实现类对于add()方法的实现机制大致相 ...

  7. [转]有关ListIterator接口的add与remove方法探究

    原文地址: http://www.java123.net/v/492971.html 应用案例: http://820199753.iteye.com/blog/2230032 ListIterato ...

  8. (网页)angular中实现li或者某个元素点击变色的两种方法(转)

    转自脚本之家: 本篇文章主要介绍了angular中实现li或者某个元素点击变色的两种方法,非常具有实用价值,需要的朋友可以参考下 本文介绍了angular中实现li或者某个元素点击变色的两种方法,分享 ...

  9. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法

    转自:http://www.cnblogs.com/CareySon/archive/2012/02/23/2365006.html SQL Server中灾难时备份结尾日志(Tail of log) ...

  10. List 重载添加-add,删除-remove方法,以及获取子集方法

    package seday12; import java.util.ArrayList;import java.util.List; /*** @author xingsir* List重载了一对ad ...

随机推荐

  1. 【Insights直播】3D建模服务,快速构建高质量3D模型

    2021年7月15日,HMS Core 6.0面向全球开发者正式上线.华为在HMS Core 6.0中,为开发者开放了一个全新的服务--3D建模服务(3D Modeling Kit),为应用开发者提供 ...

  2. 医疗BI系统如何使医疗行业完成精细化管理转型?

    不久前在北京召开的全国医疗管理工作会议,确定了今年的医疗管理工作重点.会议强调,推动医疗管理改革工作的过程中要对形势.规律准确把握,积极应对可能面临的挑战,以"三个转变.三个提高" ...

  3. Qt使用https协议发送带参数的post请求

    背景: 现在公司项目需要做一个检测更新的功能,通过访问后台接口,判断是否需要更新. 后台接口是 https 协议的,接口需要post请求,需要带参数,来判断是哪个软件需要做检测更新的操作. 客户端软件 ...

  4. 深入解析decltype和decltype(auto)

    decltype关键字是C++11新标准引入的关键字,它和关键字auto的功能类似,也可以自动推导出给定表达式的类型,但它和auto的语法有些不同,auto推导的表达式放在"="的 ...

  5. 链表LinkedList

    #include <iostream> #include <vector> using namespace std; struct Node{ int val; Node *n ...

  6. 在 macOS Big Sur 上安装 MySQL 8.x Compressed TAR Archive

    因个人能力有限,文章难免存在错误,望斧正,感谢. 版本: macOS 11.6 Intel版本 MySQL 8.0.26 Compressed TAR Archive 一.准备所需文件 前往 MySQ ...

  7. Jenkins实战系列(一)——Jenkins简介

    Jenkins是一个开源的自动化构建工具,可以帮助开发人员自动构建.测试和部署软件.它支持多种编程语言.版本控制系统和构建工具,如Java.Git.Maven等.Jenkins的核心功能是通过一系列插 ...

  8. 从源码入手详解ReentrantLock,一个比synchronized更强大的可重入锁

    写在开头 随手一翻,发现对于Java中并发多线程的学习已经发布了十几篇博客了,多线程 是Java基础中的重中之重!因此,可能还需要十几篇博客才能大致的讲完这部分的知识点,初学者对于这部分内容一定要多花 ...

  9. verilog中端口定义方式以及如何使用变量

    一.module端口定义方式 目前有两种方式能够对module端口进行定义, 第一种是我目前使用比较多的,把I/O说明写在端口声明语句里,方式A: 1 module block( 2 input a, ...

  10. 力扣121(java&python)-买卖股票的最佳时机(简单)

    题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一 ...