1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Java中5種List的去重方法及它們的效率對比,你用對了嗎?

        共 326字,需瀏覽 1分鐘

         ·

        2020-11-19 02:26

        來源:blog.csdn.net/qq3434569/article/details/100520524

        01、使用兩個for循環(huán)實現(xiàn)List去重(有序)

        ????/**使用兩個for循環(huán)實現(xiàn)List去重(有序)
        ?????*
        ?????*?@param?list
        ?????*?*/

        ????public?static?List?removeDuplicationBy2For(List?list)?{
        ????????for?(int?i=0;i????????{
        ????????????for?(int?j=i+1;j????????????{
        ????????????????if(list.get(i).equals(list.get(j))){
        ????????????????????list.remove(j);
        ????????????????}
        ????????????}
        ????????}
        ????????return?list;
        ????}

        02、使用List集合contains方法循環(huán)遍歷(有序)

        ????/**使用List集合contains方法循環(huán)遍歷(有序)
        ?????*
        ?????*?@param?list
        ?????*?*/

        ????public?static?List?removeDuplicationByContains(List?list)?{
        ????????List?newList?=new?ArrayList<>();
        ????????for?(int?i=0;i????????{
        ????????????boolean?isContains?=newList.contains(list.get(i));
        ????????????if(!isContains){
        ????????????????newList.add(list.get(i));
        ????????????}
        ????????}
        ????????list.clear();
        ????????list.addAll(newList);
        ????????return?list;
        ????}

        03、使用HashSet實現(xiàn)List去重(無序)

        ????/**使用HashSet實現(xiàn)List去重(無序)
        ?????*
        ?????*?@param?list
        ?????*?*/

        ????public?static?List?removeDuplicationByHashSet(List?list)?{
        ????????HashSet?set?=?new?HashSet(list);
        ????????//把List集合所有元素清空
        ????????list.clear();
        ????????//把HashSet對象添加至List集合
        ????????list.addAll(set);
        ????????return?list;
        ????}

        04、使用TreeSet實現(xiàn)List去重(有序)

        ????/**使用TreeSet實現(xiàn)List去重(有序)
        ?????*
        ?????*?@param?list
        ?????*?*/

        ????public?static?List?removeDuplicationByTreeSet(List?list)?{
        ????????TreeSet?set?=?new?TreeSet(list);
        ????????//把List集合所有元素清空
        ????????list.clear();
        ????????//把HashSet對象添加至List集合
        ????????list.addAll(set);
        ????????return?list;
        ????}

        05、使用java8新特性stream實現(xiàn)List去重(有序)

        ????/**使用java8新特性stream實現(xiàn)List去重(有序)
        ?????*
        ?????*?@param?list
        ?????*?*/

        ????public?static?List?removeDuplicationByStream(List?list)?{
        ????????List?newList?=?list.stream().distinct().collect(Collectors.toList());
        ????????return?newList;
        ????}

        效率測試代碼

        ????public?static?void?main(String?args[])?{
        ????????List?list1?=?new?ArrayList<>();
        ????????List?list2?=?new?ArrayList<>();
        ????????List?list3?=?new?ArrayList<>();
        ????????List?list4?=?new?ArrayList<>();
        ????????List?list5?=?new?ArrayList<>();
        ????????Random?random?=new?Random();
        ????????for?(int?i?=?0;?i?100000;?i++)?{
        ????????????int?value?=random.nextInt(500);
        ????????????list1.add(value);
        ????????????list2.add(value);
        ????????????list3.add(value);
        ????????????list4.add(value);
        ????????????list5.add(value);
        ????????}
        ????????long?startTime?;
        ????????long?endTime;
        ????????startTime?=?System.currentTimeMillis();
        ????????removeDuplicationByHashSet(list1);
        ????????endTime?=?System.currentTimeMillis();
        ????????System.out.println("使用HashSet實現(xiàn)List去重時間:"+(endTime-startTime)+"毫秒");
        ????????startTime?=?System.currentTimeMillis();
        ????????removeDuplicationByTreeSet(list2);
        ????????endTime?=?System.currentTimeMillis();
        ????????System.out.println("使用TreeSet實現(xiàn)List去重時間:"+(endTime-startTime)+"毫秒");
        ????????startTime?=?System.currentTimeMillis();
        ????????removeDuplicationByStream(list3);
        ????????endTime?=?System.currentTimeMillis();
        ????????System.out.println("使用java8新特性stream實現(xiàn)List去重:"+(endTime-startTime)+"毫秒");
        ????????startTime?=?System.currentTimeMillis();
        ????????removeDuplicationBy2For(list4);
        ????????endTime?=?System.currentTimeMillis();
        ????????System.out.println("使用兩個for循環(huán)實現(xiàn)List去重:"+(endTime-startTime)+"毫秒");
        ????????startTime?=?System.currentTimeMillis();
        ????????removeDuplicationByContains(list5);
        ????????endTime?=?System.currentTimeMillis();
        ????????System.out.println("使用List集合contains方法循環(huán)遍歷:"+(endTime-startTime)+"毫秒");
        ?
        ????}

        結(jié)果:

        • 使用HashSet實現(xiàn)List去重時間:40毫秒
        • 使用TreeSet實現(xiàn)List去重時間:36毫秒
        • 使用java8新特性stream實現(xiàn)List去重:78毫秒
        • 使用兩個for循環(huán)實現(xiàn)List去重:533毫秒
        • 使用List集合contains方法循環(huán)遍歷:40毫秒

        更多測試結(jié)果

        隨機數(shù)在100范圍內(nèi):

        • 使用HashSet實現(xiàn)List去重時間:32毫秒
        • 使用TreeSet實現(xiàn)List去重時間:40毫秒
        • 使用java8新特性stream實現(xiàn)List去重:128毫秒
        • 使用兩個for循環(huán)實現(xiàn)List去重:693毫秒
        • 使用List集合contains方法循環(huán)遍歷:30毫秒

        隨機數(shù)在1000范圍內(nèi):

        • 使用HashSet實現(xiàn)List去重時間:34毫秒
        • 使用TreeSet實現(xiàn)List去重時間:72毫秒
        • 使用java8新特性stream實現(xiàn)List去重:125毫秒
        • 使用兩個for循環(huán)實現(xiàn)List去重:1063毫秒
        • 使用List集合contains方法循環(huán)遍歷:85毫秒

        隨機數(shù)在10000范圍內(nèi):

        • 使用HashSet實現(xiàn)List去重時間:51毫秒
        • 使用TreeSet實現(xiàn)List去重時間:103毫秒
        • 使用java8新特性stream實現(xiàn)List去重:201毫秒
        • 使用兩個for循環(huán)實現(xiàn)List去重:5448毫秒
        • 使用List集合contains方法循環(huán)遍歷:791毫秒

        結(jié)論

        無序HashSet,有序TreeSet

        推薦閱讀

        這應(yīng)該是全網(wǎng)最全的Git分支開發(fā)規(guī)范手冊~

        圖片驗證碼的需求分析、優(yōu)雅實現(xiàn)

        8種常見SQL錯誤用法

        一個小小的簽到功能,到底用MySQL還是Redis?


        最后,推薦給大家一個有趣有料的公眾號:寫代碼的渣渣鵬,7年老程序員教你寫bug,回復(fù)?面試或資源 送一你整套開發(fā)筆記 有驚喜哦


        瀏覽 47
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            美女被操视频在线观看 | 久久久久久久久久久免费视频 | wwwxxxxx国产 | 国产福利一二 | 成人黄色网址 | 欧美精品www | 国产精品美女www爽爽爽小说 | 免费国产裸播视频女主播 | 操逼、com | 水蜜桃成人视频 |