• 目录

集合List的陷阱

阅读量: 399 编辑

集合List的陷阱

  • 在 foreach 循环中不要使用remove方法

  • 最好通过迭代器Iterator进行元素的删除:it.remove()

一、代码实战

代码的详细解读,可以参考视频教程

package com.qicong.zj.c22;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * User: 祁大聪
 */
public class S22 {

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");

        //直接用foreach删除会报错
//        for(String item : list){
//            if(item.equals("two")){
//                list.remove(item);
//            }
//            System.out.print(item + ",");
//        }

//        for(int i = 0;i < list.size(); i++){
//            if(list.get(i).equals("two")){
//                list.remove(i);
//            }
//            System.out.print(list.get(i) + ",");
//        }

        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String item = it.next();
            if("two".equals(item)){
                it.remove();
            }
        }

        for(String item : list){
            System.out.print(item);
        }

    }
}


  • 目录