public static void main(String[] args) {
List<String> list = new ArrayList<String>() ;
list.add("A") ; // 增加元素
list.add("B") ; // 增加元素
list.add("C") ; // 增加元素
list.add("D") ; // 增加元素
// int size = list.size();
// for(int i=0; i < size; i++){
// if (i==1){
// list.remove(1);
// }else{
// System.out.println(list.get(i)) ;
// }
// }
// A
// Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
// at java.util.ArrayList.RangeCheck(ArrayList.java:547)
// at java.util.ArrayList.get(ArrayList.java:322)
// at collectionTest.ListRemoveTest.main(ListRemoveTest.java:17)
int i = 0;
int size = list.size();
while (true) {
if (i == size - 1) {
break;
}
String item = list.get(i);
if (item.equals("B")){
list.remove(item);
i--;
}else{
System.out.println(item) ;
}
i++;
}
}
2 或者把要删除的元素放到集合中,删除集合中的元素
public static void main(String[] args) {
List<String> list = new ArrayList<String>() ;
list.add("A") ; // 增加元素
list.add("B") ; // 增加元素
list.add("C") ; // 增加元素
list.add("D") ; // 增加元素
List<String> beRemove = new ArrayList<String>() ;
beRemove.add("A") ; // 增加元素
list.removeAll(beRemove);
Iterator<String> itA = list.iterator();
while(itA.hasNext()){
System.out.println(itA.next());
}
// B
// C
// D
}
2的好处,操作简单。
1的好处,当要删除的是根据数组元素条件判断时,节省内存,时间较快
3 使用Iterator的remove方法,当不能是list的remove方法,否则报错
public static void main(String[] args) {
List<String> list = new ArrayList<String>() ;
list.add("A") ; // 增加元素
list.add("B") ; // 增加元素
list.add("C") ; // 增加元素
list.add("D") ; // 增加元素
Iterator<String> itA = list.iterator();
while(itA.hasNext()){
String next = itA.next();
if(next.equals("B")){
itA.remove();
}else{
System.out.println(next);
}
}
// Iterator<String> itA = list.iterator();
// while(itA.hasNext()){
// String next = itA.next();
// if(next.equals("B")){
// list.remove(next);
// }else{
// System.out.println(next);
// }
// }
// A
// Exception in thread "main" java.util.ConcurrentModificationException
// at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
// at java.util.AbstractList$Itr.next(AbstractList.java:343)
// at collectionTest.ListRemoveAllTest.main(ListRemoveAllTest.java:28)
}