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

歡迎訪問 生活随笔!

生活随笔

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

java

java list 比较_Java中List的五种去重方法及效率对比,你都用对了吗?

發布時間:2024/9/27 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java list 比较_Java中List的五种去重方法及效率对比,你都用对了吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01、使用兩個for循環實現List去重(有序)

/**使用兩個for循環實現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方法循環遍歷(有序)

/**使用List集合contains方法循環遍歷(有序)

*

* @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實現List去重(無序)

/**使用HashSet實現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實現List去重(有序)

/**使用TreeSet實現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實現List去重(有序)

/**使用java8新特性stream實現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實現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)+"毫秒");

}

結果:使用HashSet實現List去重時間:40毫秒

使用TreeSet實現List去重時間:36毫秒

使用java8新特性stream實現List去重:78毫秒

使用兩個for循環實現List去重:533毫秒

使用List集合contains方法循環遍歷:40毫秒

更多測試結果

隨機數在100范圍內:使用HashSet實現List去重時間:32毫秒

使用TreeSet實現List去重時間:40毫秒

使用java8新特性stream實現List去重:128毫秒

使用兩個for循環實現List去重:693毫秒

使用List集合contains方法循環遍歷:30毫秒

隨機數在1000范圍內:使用HashSet實現List去重時間:34毫秒

使用TreeSet實現List去重時間:72毫秒

使用java8新特性stream實現List去重:125毫秒

使用兩個for循環實現List去重:1063毫秒

使用List集合contains方法循環遍歷:85毫秒

隨機數在10000范圍內:使用HashSet實現List去重時間:51毫秒

使用TreeSet實現List去重時間:103毫秒

使用java8新特性stream實現List去重:201毫秒

使用兩個for循環實現List去重:5448毫秒

使用List集合contains方法循環遍歷:791毫秒

結論

無序HashSet,有序TreeSet

最后

感謝大家看到最后,如文章有不足,歡迎大家在評論區支持,給予意見。如果覺得我的文章對你有幫助,那就給我一個贊同吧。

每天都會分享java相關技術文章或行業資訊。歡迎大家關注和轉發文章。

總結

以上是生活随笔為你收集整理的java list 比较_Java中List的五种去重方法及效率对比,你都用对了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

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