java中for輪回刪除聚集圈套。本站提示廣大學習愛好者:(java中for輪回刪除聚集圈套)文章只能為提供參考,不一定能成為您想要的結果。以下是java中for輪回刪除聚集圈套正文
起首看上面的代碼:
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
還殘剩的元素個數:2
處理方法:
究其緣由是由於你要刪除的元素往後面挪動了,而你的i保留的值照舊往後走,所以假如讓i不往後走,往前走一個,便可刪除原來排在第二個地位的元素如今排在了第一個地位上的元素。
更改後的焦點代碼:
for(int i=0;i<list.size();i++){ System.out.println("行將刪除的元素:"+list.get(i)); list.remove(i); i--; }
成果:
行將刪除的元素:a
行將刪除的元素:b
行將刪除的元素:c
行將刪除的元素:d
行將刪除的元素:e
還殘剩的元素個數:0
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。