算是回顾知识吧,以前就听老师说list遍历列表要删除元素要用iterator.remove(),没怎么注意,今天试着写了一个方法,运行了一下发现还真是。
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
arrayList.add(i + "");
}
for (int i = 0; i < arrayList.size(); i++) {
arrayList.remove(i);
System.out.println(arrayList.size());
}
为什么删不干净呢,因为remove执行后,arraylist.size()不断变小,导致原来下标的数据没了(对,到其他地方去了),所以删不干净。正确的做法是:
ArrayList<String> arrayList = new ArrayList<String>();
for (int i = 0; i < 5; i++) {
arrayList.add(i + "");
}
Iterator<String> it = arrayList.iterator();
while (it.hasNext()) {
String xString=it.next();
it.remove();
}
System.out.println(arrayList.size()+"");