悟心

          成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成。 上人生的旅途罷。前途很遠,也很暗。然而不要怕。不怕的人的面前才有路。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            93 隨筆 :: 1 文章 :: 103 評論 :: 0 Trackbacks
          import java.util.*;

            
          public class object {

            
          public static void main(String[] args) {

            String str1 
          = new String("abcde");

            String str2 
          = new String("abcde");

            String str3 
          = new String("abcde");

            String str4 
          = new String("abcde");

            String str5 
          = new String("abcde");

            List list 
          = new ArrayList();

            list.add(str1);

            list.add(str2);

            list.add(str3);

            list.add(str4);

            list.add(str5);

            System.out.println(
          "list.size()=" + list.size());

            
          for (int i = 0; i < list.size(); i++) {

            
          if (((String) list.get(i)).startsWith("abcde")) {

            list.remove(i);

            }

            運行結果不是:

            list.size()
          =5

            after remove:list.size()
          =0

            居然是:

            list.size()
          =5

            after remove:list.size()
          =2

            原因:List每remove掉一個元素以后,后面的元素都會向前移動,此時如果執行i
          =i+1,則剛剛移過來的元素沒有被讀取。

            解決方法:

            
          1.倒過來遍歷list

            
          for (int i = list.size()-1; i > =0; i--) {

            
          if (((String) list.get(i)).startsWith("abcde")) {

            list.remove(i);

            }

            }

            
          2.每移除一個元素以后再把i移回來

            
          for (int i = 0; i < list.size(); i++) {

            
          if (((String) list.get(i)).startsWith("abcde")) {

            list.remove(i);

            i
          =i-1;

            }

            }

            
          3.使用iterator.remove()方法刪除

            
          for (Iterator it = list.iterator(); it.hasNext();) {

            String str 
          = (String)it.next();

            
          if (str.equals("chengang")){

            it.remove();

            }

            }

            }

            System.out.println(
          "after remove:list.size()=" + list.size());

            }

            }
          posted on 2010-11-15 13:56 艾波 閱讀(582) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 固原市| 藁城市| 乐安县| 天水市| 塔城市| 霍山县| 多伦县| 湖南省| 册亨县| 通渭县| 和平区| 海阳市| 元江| 门源| 报价| 镇赉县| 通州区| 房山区| 大港区| 松潘县| 平凉市| 星座| 新邵县| 政和县| 临安市| 云林县| 娄底市| 建平县| 客服| 景洪市| 杨浦区| 房产| 淄博市| 交口县| 泸溪县| 绥德县| 临泉县| 嘉禾县| 东安县| 惠水县| 定日县|