线程中使用for循环的add或remove方法的两种方案
- 
简介 (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循环![]() View Code View Code1 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): 研究中 ...... 
 
                    
                     
                    
                 
                    
                 

 
        
 

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号