今天寫**時,需要刪除乙個列表中的某個元素,於是就用了乙個迴圈,一邊遍歷一邊刪除,乙個同事在review我的**時告訴我,不能這樣寫,會出問題。
if(list.get(i).icon_name.equals("shape8")}
於是,google了一下,原來這種遍歷有可能會遺漏某個元素,因為刪除元素後list的size在變化,元素的索引也在變化,比如你迴圈到第2個元素的時候你把它刪了,接下來你去訪問第3個元素,實際上訪問到的是原先的第4個元素。
iteratoriterator = list.iterator();
while(iterator.hasnext())
}
這時候,我們可以使用iterator的方式也可以順利刪除和遍歷。 深度優先遍歷之樹邊,前向邊,回邊,橫跨邊
無意翻到一篇大佬的部落格,感覺寫得很好,給了我很大的幫助,特此 根據在有向圖g上進行深度優先遍歷所產生的深度優先森林,可以把圖中的邊分為四類 1 樹邊 是dfs森林的實際組成部分。如果頂點v是在探測邊 u,v 時首次被發現的,那麼 u,v 就是一條樹邊。2 前向邊 是dfs樹中從乙個頂點指向該頂點的...
ArrayList遍歷刪除方式除錯
錯誤的遍歷方式 fori 正向遍歷方式是通過獲取arraylist的底層陣列通過下標進行遍歷。這種方法進行遍歷刪除指定元素,雖然不會報錯,但是元素資料有誤。list list collutil.newarraylist 1 2,3 4,5 test public void testlist syst...
ArrayList 貨物庫存管理(遍歷)
package com.oracle.demo01 import j a.util.arraylist import j a.util.scanner public class demo03 商品展示頁面 public static void show 查詢所有商品 public static vo...