日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

list contains方法_Java中给List去重的5种方法,谁的效率更高?

發布時間:2025/3/19 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 list contains方法_Java中给List去重的5种方法,谁的效率更高? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛開始學習list的時候就學習了在list集合中如何去除重復數據,當時第一想到的就是通過循環判斷來去除重復數據,后來慢慢接觸的東西多了,就開始注重一個效率,當數據量巨大的時候,怎么樣才能查的更快,怎樣的代碼會更好。

接下來總結list中去重的幾個方法

1、使用雙重for循環實現List去重

????/**使用雙重for循環實現List去重(有序) * * @param list * */ public static List removeDuplicationBy2For(Listlist) { for (int i=0;i<list.size();i++) { for (int j=i+1;j<list.size();j++) { if(list.get(i).equals(list.get(j))){ list.remove(j); } } } return list; }

2、使用List集合中contains方法循環遍歷

/**使用List集合contains方法循環遍歷(有序) * * @param list * */ public static List removeDuplicationByContains(Listlist) { List newList =new ArrayList<>(); for (int i=0;i<list.size();i++) { boolean isContains =newList.contains(list.get(i)); if(!isContains){ newList.add(list.get(i)); } } list.clear(); list.addAll(newList); return list; }

3、使用HashSet實現List去重

/**使用HashSet實現List去重(無序) * * @param list * */ public static List removeDuplicationByHashSet(Listlist) { HashSet set = new HashSet(list); //把List集合所有元素清空 list.clear(); //把HashSet對象添加至List集合 list.addAll(set); return list; }

4、使用TreeSet實現List去重

/**使用TreeSet實現List去重(有序) * * @param list * */ public static List removeDuplicationByTreeSet(Listlist) { TreeSet set = new TreeSet(list); //把List集合所有元素清空 list.clear(); //把HashSet對象添加至List集合 list.addAll(set); return list; }

5、使用java8新特性stream流實現List去重

/**使用java8新特性stream實現List去重(有序) * * @param list * */ public static List removeDuplicationByStream(Listlist) { List newList = list.stream().distinct().collect(Collectors.toList()); return newList; }

測試各個方法效率

隨機取100000個500以內的數字存入5個集合,分別調用5個方法進行測試,計算去除重復值所需的時間public?class?Demo?{ 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實現List去重時間:"+(endTime-startTime)+"毫秒"); startTime = System.currentTimeMillis(); removeDuplicationByTreeSet(list2); endTime = System.currentTimeMillis(); System.out.println("使用TreeSet實現List去重時間:"+(endTime-startTime)+"毫秒"); startTime = System.currentTimeMillis(); removeDuplicationByStream(list3); endTime = System.currentTimeMillis(); System.out.println("使用java8新特性stream實現List去重:"+(endTime-startTime)+"毫秒"); startTime = System.currentTimeMillis(); removeDuplicationBy2For(list4); endTime = System.currentTimeMillis();????????????System.out.println("使用雙重for循環實現List去重:"+(endTime-startTime)+"毫秒"); startTime = System.currentTimeMillis(); removeDuplicationByContains(list5); endTime = System.currentTimeMillis(); System.out.println("使用List集合contains方法循環遍歷:"+(endTime-startTime)+"毫秒"); }????/**使用雙重for循環實現List去重(有序) * * @param list * */ public static List removeDuplicationBy2For(Listlist) { for (int i=0;i<list.size();i++) { for (int j=i+1;j<list.size();j++) { if(list.get(i).equals(list.get(j))){ list.remove(j); } } } return list; } /**使用List集合contains方法循環遍歷(有序) * * @param list * */ public static List removeDuplicationByContains(Listlist) { List newList =new ArrayList<>(); for (int i=0;i<list.size();i++) { boolean isContains =newList.contains(list.get(i)); if(!isContains){ newList.add(list.get(i)); } } list.clear(); list.addAll(newList); return list; } /**使用HashSet實現List去重(無序) * * @param list * */ public static List removeDuplicationByHashSet(Listlist) { HashSet set = new HashSet(list); //把List集合所有元素清空 list.clear(); //把HashSet對象添加至List集合 list.addAll(set); return list; } /**使用TreeSet實現List去重(有序) * * @param list * */ public static List removeDuplicationByTreeSet(Listlist) { TreeSet set = new TreeSet(list); //把List集合所有元素清空 list.clear(); //把HashSet對象添加至List集合 list.addAll(set); return list; } /**使用java8新特性stream實現List去重(有序) * * @param list * */ public static List removeDuplicationByStream(Listlist) { List newList = list.stream().distinct().collect(Collectors.toList()); return newList; }}

結果1:

使用HashSet實現List去重時間:14毫秒使用TreeSet實現List去重時間:20毫秒使用java8新特性stream實現List去重:52毫秒使用雙重for循環實現List去重:355毫秒使用List集合contains方法循環遍歷:27毫秒

結果2:

使用HashSet實現List去重時間:21毫秒使用TreeSet實現List去重時間:24毫秒使用java8新特性stream實現List去重:67毫秒使用雙重for循環實現List去重:401毫秒使用List集合contains方法循環遍歷:37毫秒

結果3:

使用HashSet實現List去重時間:16毫秒使用TreeSet實現List去重時間:72毫秒使用java8新特性stream實現List去重:62毫秒使用雙重for循環實現List去重:350毫秒使用List集合contains方法循環遍歷:33毫秒如果沒有要求有序排列的時候,使用HashSet處理最好

總結

以上是生活随笔為你收集整理的list contains方法_Java中给List去重的5种方法,谁的效率更高?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。