最近寫java代碼的時候遇到了需要將List中的元素全部刪除的情況,開始一股腦的就寫下了如下代碼:
for(int i=0; i<list.size(); i++){
list.remove(i);
}
發現無論如何也刪除不乾淨,仔細一想確實如此:list的大小在減小,i<list.size() 這個循環控制條件是在變化的,當然是刪除不完全的。
下面給出兩種刪除方法,對於刪除list中的所有元素和特定元素都是適用的。
方法1:倒序刪除
// 刪除方法一:倒序刪除
for(int i=list.size()-1;i>=0;i--){
list.remove(i);
}
System.out.println(list.isEmpty());
方法2:用迭代器
//刪除方法二:用迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
it.next();
it.remove();
}
System.out.println(list.isEmpty());
對於刪除特定元素的代碼如下:
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList("A","A","B","B","C","D","E"));
System.out.println(list);
//for循環
for(int i =list.size()-1;i>=0;i--){
if(list.get(i).equals("A")){
list.remove(i);
}
}
System.out.println(list);
//迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
if(it.next().equals("B")){
it.remove();
}
}
System.out.println(list);