1. 程式人生 > >ArrayList中remove()方法刪除長度大於5的元素之後下標重定位的問題

ArrayList中remove()方法刪除長度大於5的元素之後下標重定位的問題

com 有一個 fad 就刪除 成了 位置 p s cnblogs 中心

1、問題闡述


需求

有一個ArrayList數組,要求刪除長度大於5的字符串,如:arr = {"ab1","123ad","bca","dadfadf","dddaaa","你好啊","我來啦","別跑啊"};

要求結果輸出

{"ab1","123ad","bca","你好啊","我來啦","別跑啊"}

難點

  刪除元素可以用remove()方法,先循環遍歷元素,如果發現該元素的長度大於5就刪除該元素,但是問題來了,假設此時刪除的元素下標為3,後面的元素會自動往前移動一位,填補被刪除了的元素,下一次循環遍歷下標就變成了4,直接跳過了之前填補的位置,但剛剛的位置的元素已經變了,此時這個元素已經遍歷不到了。

  中心難點是如何能夠再一次遍歷剛剛位置上的元素,彌補刪除元素之後自動跳到下一個元素的漏洞。圖解如下:

 技術分享

2、解決方案


3、經驗總結


ArrayList中remove()方法刪除長度大於5的元素之後下標重定位的問題