首先看下面的程式碼:
import java.util.LinkedList; import java.util.List; public class DeleteCollection { public static void main(String[] args) { List<String> list = new LinkedList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); for(int i=0;i<list.size();i++){ //循环删除集合中的元素 list.remove(i); } System.out.println("还剩余的元素个数:"+list.size()); } }
上述的程式碼按照思路應該是對的,輸出的結果也應該是0
看下面實際輸出的結果:
還剩餘的元素個數:2
你也許會問為什麼呢?因為集合的大小是動態變化的,當你刪除一個元素之後,元素中的序號又重新排列,原來第二個應該刪除的元素現在排在了第一個元素的位置,真正刪除的卻是第三個元素,依次類推,刪除的是第一個、第三個、第五個、、、、如果在原來刪除的程式碼中加入語句:System.out.println("即將刪除的元素:"+list. get(i));即可驗證。 加入上述語句後輸出的結果:
即將刪除的元素:a
即將刪除的元素:c
即將刪除的元素:e
for(int i=0;i<list.size();i++){ System.out.println("即将删除的元素:"+list.get(i)); list.remove(i); i--; }
即將刪除的元素:b
即將刪除的元素:c
即將刪除的元素:d
即將刪除的元素: e
還剩餘的元素個數:0