list contains方法_Java中给List去重的5种方法,谁的效率更高?
生活随笔
收集整理的這篇文章主要介紹了
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种方法,谁的效率更高?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言写九九乘法表_【酷叮课堂
- 下一篇: vsphere ha 虚拟机监控错误_学