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

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

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

    posts - 54,  comments - 1,  trackbacks - 0

    項目中的問題:ArrayList中可能存在重復值,需要將重復值剔除掉.剛開始的想法是做一個嵌套循環,將當前值與之后的所有值比較,如果重復則將后面重復的值刪除掉.但是運行后發現,由于循環中刪除值后會影響到數組的索引值,所以會出現漏值和跳值的現象.

    仔細想想后,覺得應該反向遍歷數組,這樣從后面刪除元素后不會影響到前面元素的索引值,可以避免前面的問題:

     // 刪除ArrayList中重復元素
     public static void removeDuplicate(List list) {
      
    for (int i = 0; i < list.size() - 1; i++{
       
    for (int j = list.size() - 1; j > i; j--{
        
    if (list.get(j).equals(list.get(i))) {
         list.remove(j);
        }

       }

      }

      System.
    out.println(list);
     }


    可是這樣做,總覺得嵌套循環的效率很低,比較ArrayList大了以后的執行時間.又想到HashSet中是不能有又重復值的,要是能用HashSet來過濾該多好.查了下JDK的文檔,發現HashSet有一個構造函數 public HashSet(Collection c),到網上一查,果然有這樣做的例子(http://blog.csdn.net/doodoofish/archive/2004/05/07/17922.aspx):

    // 刪除ArrayList中重復元素
     public static void removeDuplicate(List list) {
      HashSet h 
    = new HashSet(list);
      list.clear();
      list.addAll(h);
      System.
    out.println(list);
     }


     
    //刪除ArrayList中重復元素,保持順序
     public static void removeDuplicateWithOrder(List list) {
      Set 
    set = new HashSet();
      List newList 
    = new ArrayList();
      
    for (Iterator iter = list.iterator(); iter.hasNext();) {
       Object element 
    = iter.next();
       
    if (set.add(element))
        newList.add(element);
      }

      list.clear();
      list.addAll(newList);
      System.
    out.println("remove duplicate" + list);
     }


    可以看出:向Set中即使插入重復值,也只會保留個實例.

    不過,運行后發現使用循環的方法好像并不比Set過濾慢多少(1000條記錄,10~20毫秒),而且某些情況下Set過濾甚至比循環還慢(最慢一次是 311毫秒:60毫秒)

    posted on 2005-08-18 11:38 ZhuJun 閱讀(2009) 評論(1)  編輯  收藏 所屬分類: 開發手記

    FeedBack:
    # re: 剔除ArrayList中的重復值
    2008-08-26 14:01 | nf
    根本不好用  回復  更多評論
      

    蜀中人氏,躬耕于珠海

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(2)

    隨筆分類(71)

    隨筆檔案(54)

    博客

    文檔

    站點

    論壇

    搜索

    •  

    積分與排名

    • 積分 - 51168
    • 排名 - 974

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 91亚洲性爱在线视频| 久久精品国产精品亚洲色婷婷| 亚洲乱码一区av春药高潮| 99久热只有精品视频免费观看17| 亚洲精品无码久久久久| 中文在线免费视频| 中文字幕亚洲乱码熟女一区二区| 国产免费区在线观看十分钟| 亚洲欧洲中文日韩久久AV乱码| 夜夜爽妓女8888视频免费观看| 亚洲精品无码av天堂| 国产区在线免费观看| 国产∨亚洲V天堂无码久久久| 久草视频在线免费看| 亚洲日韩乱码中文无码蜜桃臀| 88av免费观看| 亚洲av午夜精品无码专区| 免费无码又爽又刺激高潮的视频 | 亚洲AV无码专区国产乱码不卡| 成人永久免费福利视频网站| 免费大片av手机看片| 亚洲乱码一区二区三区在线观看| 99精品视频免费观看| 亚洲综合色丁香婷婷六月图片| 国产乱子影视频上线免费观看| 国产免费人成视频尤勿视频 | 亚洲欧美中文日韩视频| 内射无码专区久久亚洲 | 4455永久在线观免费看| 国产亚洲精aa在线看| 亚洲高清偷拍一区二区三区| 免费观看在线禁片| 中国亚洲呦女专区| 国产aⅴ无码专区亚洲av麻豆| 亚洲免费中文字幕| 羞羞视频在线免费观看| 久久久久亚洲Av片无码v| 最近2019中文字幕免费看最新| 成年免费a级毛片| 亚洲第一精品电影网| 一本久久综合亚洲鲁鲁五月天|