<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    如何刪除JAVA集合中的元素

    文/陳剛 2005-12-05?

    經常我們要刪除集合中的某些元素。有些可能會這么寫。
    ???
      public void operate(List list){
    ??????? for (Iterator it = list.iterator(); it.hasNext();) {
    ??????????? String str =? (String)it.next();
    ??????????? if (str.equals("chengang")){
    ??????????????? list.remove(str);
    ??????????? }
    ??????? }
    ??? }
       
      這種寫法一運行就會報如下異常:
     
    Exception in thread "main" java.util.ConcurrentModificationException
    ?at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
     
      因為list在循環中的時候是不可以刪除它的元素的。后來我是這樣做的,一種很笨的方法,思路是這樣的:創建一個List專門存放要被刪除的元素,循環過后,用List.removeAll方法把元素刪除。代碼如下:
    ??? public void operate(List list){
    ??????? List removeList= new ArrayList();
    ??????? for (Iterator it = list.iterator(); it.hasNext();) {
    ??????????? String str =? (String)it.next();
    ??????????? if (str.equals("chengang")){
    ??????????????? removeList.add(str);
    ??????????? }
    ??????? }
    ??????? list.removeAll(removeList);
    ??? }
     
      這樣也確實可以解決問題了,但是方法實在太笨重,其實可以有更簡單的更高效的方法,就是用Iterator.remove方法,如下:
    ??????? for (Iterator it = list.iterator(); it.hasNext();) {
    ??????????? String str =? (String)it.next();
    ??????????? if (str.equals("chengang")){
    ??????????????? it.remove();
    ??????????? }
    ??????? }
    ?
     所以,你對Java的基礎知識了解越多,代碼就會寫得越簡潔。相反如果你的代碼特別復雜,則方法或設計一定有問題。

    posted on 2006-03-02 14:02 陳剛 閱讀(3798) 評論(2)  編輯  收藏 所屬分類: Java

    評論

    # re: 如何刪除JAVA集合中的元素  回復  更多評論   

    用下標操作就行了,寫這么多.
    2008-03-25 17:59 |

    # re: 如何刪除JAVA集合中的元素  回復  更多評論   

    這個函數本身執行是不會 報錯的.
    你可能是這樣的調用過程報的上面那個錯
    過程1:
    ........
    Iterator it=list.iterator();
    operate(list);
    while(it.hasNext()){
    System.out.println(it.next());
    }
    ...............................
    這樣確實會報上面那個錯誤:
    Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at yingwu.test.all.DeleteFromList.main(DeleteFromList.java:30)

    .....................................
    是因為前面的Iteater引用了這個元素,但被刪了.
    正確的過程應該是:2
    過程2:
    ..........
    operate(list);
    Iterator it=list.iterator();
    while(it.hasNext()){
    System.out.println(it.next());
    }
    2008-03-27 13:55 | yingwu
    主站蜘蛛池模板: 久久精品国产亚洲AV无码娇色| 亚洲精品无码AV人在线播放| 91亚洲性爱在线视频| 久久久精品免费视频| 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲精品无播放器在线播放| 91福利视频免费观看| 91精品国产亚洲爽啪在线观看| 免费国产成人午夜在线观看| 香蕉蕉亚亚洲aav综合| 99蜜桃在线观看免费视频网站| 久久精品国产亚洲AV无码麻豆| 999任你躁在线精品免费不卡| 亚洲综合久久1区2区3区| 国产在线观看麻豆91精品免费 | 国内精品免费在线观看| 亚洲国产a∨无码中文777| 久久青草国产免费观看| 亚洲理论片中文字幕电影| 最近的中文字幕大全免费版| 亚洲成a人无码亚洲成www牛牛 | 亚洲人成图片小说网站| 日韩精品免费在线视频| 亚洲第一页在线观看| 免费无码不卡视频在线观看| 色吊丝免费观看网站| 亚洲欧洲国产精品香蕉网| 精品一区二区三区无码免费视频| 亚洲国产精品久久久久秋霞影院 | 免费看小12萝裸体视频国产 | 亚洲av乱码一区二区三区按摩| 亚洲成a人无码av波多野按摩| 99麻豆久久久国产精品免费| 亚洲综合色丁香麻豆| 国产精品视_精品国产免费| 久久www免费人成精品香蕉| 久久精品国产精品亚洲艾| 成人免费无码大片a毛片| 一级特黄特色的免费大片视频| 亚洲av不卡一区二区三区| 最近的免费中文字幕视频 |