<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
    主站蜘蛛池模板: 亚洲伊人tv综合网色| 亚洲无线码一区二区三区| 亚洲成人在线免费观看| 蜜桃成人无码区免费视频网站 | 亚洲av永久无码制服河南实里| 免费国产a理论片| 亚洲午夜无码AV毛片久久| 一级大黄美女免费播放| 国产成人亚洲精品91专区手机| 深夜福利在线免费观看| 亚洲精品无码永久在线观看| 久久成人18免费网站| 久久亚洲AV午夜福利精品一区| 日韩电影免费观看| 亚洲人成网站在线观看播放动漫 | 亚洲国产午夜精品理论片| 亚洲成在人线aⅴ免费毛片| 亚洲欧美日韩中文字幕在线一区| 国产免费av一区二区三区| 特级毛片在线大全免费播放| 伊人久久综在合线亚洲91| 久久成人免费播放网站| 亚洲AV综合色区无码二区偷拍| 永久黄网站色视频免费观看| caoporm碰最新免费公开视频| 亚洲一区二区三区自拍公司| 亚洲免费视频播放| 国产AV无码专区亚洲AV麻豆丫| 亚洲日韩中文在线精品第一| 国产成人精品免费久久久久| 亚洲成a人片在线观看精品| 一本色道久久88亚洲综合 | 亚洲三级中文字幕| 亚洲色偷偷狠狠综合网| 无码国产精品一区二区免费vr| 亚洲中文无码永久免| 亚洲国产综合久久天堂| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲爆乳成av人在线视菜奈实| 国产亚洲精品资源在线26u| 美女视频黄是免费的网址|