悟心

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            93 隨筆 :: 1 文章 :: 103 評論 :: 0 Trackbacks
          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(2)

          隨筆分類(91)

          隨筆檔案(92)

          文章檔案(1)

          新聞檔案(5)

          相冊

          1

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          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 艾波 閱讀(581) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 河津市| 高州市| 石景山区| 秦安县| 新郑市| 平利县| 孟村| 赣州市| 莱芜市| 济南市| 乌鲁木齐县| 栾城县| 玉山县| 益阳市| 天峨县| 什邡市| 石泉县| 渭南市| 靖西县| 洪江市| 高邮市| 彩票| 桐梓县| 思南县| 同江市| 体育| 康定县| 谢通门县| 巢湖市| 广西| 庆云县| 潞城市| 泾川县| 晋中市| 谷城县| 天柱县| SHOW| 通城县| 湄潭县| 梧州市| 临汾市|