1 public static void main(String[] args) 2 { 3 List<String> list = new ArrayList<String>(); 4 5 list.add("yaoyuan"); 6 list.add("tiancai"); 7 8 Iterator it = list.iterator(); 9 String s = ""; 10 while(it.hasNext()){ 11 System.out.println("aaa"); 12 if(s == null){ 13 System.out.println("@@@"); 14 continue; 15 } 16 // System.out.println(it.next()); 17 if(((String)it.next()).equals("yaoyuan")){ 18 it.remove(); 19 20 } 21 } 22 for (String string : list) 23 { 24 System.out.println(string); 25 } 26 }
在以上代碼中,若臨時變量s爲空的話,則會進入死循環。spa
這是因爲沒有正確的理解continue的用法,continue會結束其後跟隨的語句而直接開始下一次的循環,在這裏s爲空,則直接進行下一次循環,沒有執行到it.next(),全部iterator的序列值沒有發生變化,hasNext永遠都是真,進入死循環。code
另外,在對集合作遍歷操做的時候不容許有插入或者刪除操做,不然會拋異常。若要刪除能夠使用iterator的remove方法,也能夠在元素中作一個標記,循環結束後再作操做。blog