标签:Code iterator list remove add 线程 stringList
线程中使用for循环的add或remove方法的两种方案
-
简介 (Introduction):
-
背景
在使用线程中添加list的元素时,使用add或remove就会产生异常. -
分析
该list每当删除/添加一个元素时,集合的size方法的值都会减小1,这将直接导致集合中元素的索引重新排序,进一步说,就是剩余所有元素的索引值都减一,而for循环语句的局部变量i扔然在递减,这将导致删除/添加操作发生跳跃,从而都是删除或增加的问题. -
快速上手(Getting Started)
方法一:
list转化为iterator1 Iterator<String> iterator = stringList.iterator();
View Code测试:
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 }
View Code方法二:
逆向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 }
View Code
-
-
环境设置 (Prerequisite):
- 环境
JDK1.8 - 配置
IDEA 2019 -
存在问题
暂无
- 环境
-
进阶篇 (Advanced):
研究中 ......
标签:Code,iterator,list,remove,add,线程,stringList 来源: https://www.cnblogs.com/sunny3158/p/16698153.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。