import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListRemoveTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); int i =0; for(i=0;i<3;i++){ list.add("aaaaa1111"); } //第一种方式 //从后面遍历就没必要考虑长度的问题了,移除后面的对象不会对整个链表位置产生变化 int size =list.size(); for(i=size-1;i>-1;i--){ if("aaaaa1111".equals(list.get(i))){ list.remove(i); } } //第二种 //遍历的长度必定要是list.size(),由于后面移除对象以后就会致使list长度变化 for(i=0;i<list.size();i++){ if("aaaaa1111".equals(list.get(i))){ list.remove(i); i--; } } //第三种 //最经常使用的方式 Iterator<String> it = list.iterator(); while(it.hasNext()){ if("aaaaa1111".equals(it.next())){ //移除当前的对象 it.remove(); } } System.err.println(list.size()); } }