国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

如何去除Java中List集合中的重復(fù)數(shù)據(jù)

瀏覽:41日期:2022-09-01 08:28:43

1.循環(huán)list中的所有元素然后刪除重復(fù)

public class duplicatRemoval {public static List 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);}}}return list;}}

總結(jié):

兩層循環(huán),外層循環(huán)從第一個(gè)元素向最后一個(gè)元素循環(huán),內(nèi)層循環(huán)是從最后一個(gè)元素向外層循環(huán)元素的當(dāng)前元素循環(huán)。比較兩個(gè)元素是否相等,如果相等,移除靠后的元素來進(jìn)行去重。這種方法時(shí)間復(fù)雜度大于O(n),小于O(N²)

2.通過HashSet剔除重復(fù)元素

public class duplicatRemoval {public static List removeDuplicate(List list) {HashSet hashSet = new HashSet(list) ;list.clear();list.addAll(hashSet);return list;}}

總結(jié):

此種方式是利用了Set的特性:元素不可重復(fù),其底層原理是先計(jì)算每個(gè)對(duì)象的hash值,再比較元素值是否相同,如果相同,則保留最新的。

3.刪除ArrayList中重復(fù)元素,保持順序

public class duplicatRemoval {public static void removeDuplicateWithOrder(List list) {Set set = new HashSet( );List newList = new ArrayList();for (Iterator iter = list. iterator(); iter. hasNext();) {0bject element= iter.next( );if (set. add( element) )newList.add( element);}list.clear();list.addAll(newList);System. out. println(”remove duplicate'+ list);}}

4.把list里的對(duì)象遍歷一遍,用list.contain(),如果不存在就放入到另外一個(gè)list集合中

public class duplicatRemoval {public static List removeDuplicate(List list){List listTemp = new ArrayList();for(int i=0;i<list. size();i++){if( !listTemp . contains(list.get(i))){listTemp. add(list.get(i));}return listTemp;}

5.用JDK1.8 Stream中對(duì)List進(jìn)行去重:list.stream().distinct();

public class duplicatRemoval {public static void main(String[] args) {List<Integer> list = new ArrayList<>( 1000000) ;for(inti=0;i<10;i++){list. add(1);System . out. println(list);List shortList = removeDuplicate(list);System . out . println( shortList);}@Suppres sWarnings( 'rawtypes' )public static List removeDuplicate(List list){List newList = (List) list. stream(). distinct( ).collect(Collectors. toList());return newList ;

如何去除Java中List集合中的重復(fù)數(shù)據(jù)

首先獲得此list的Stream,然后調(diào)用distinct()方法。Java8中提供流的方式對(duì)數(shù)據(jù)進(jìn)行處理,非常快,底層用的是forkJoin框架,提供了并行處理,使得多個(gè)處理器同時(shí)處理流中的數(shù)據(jù),所以耗時(shí)非常短。

到此這篇關(guān)于如何去除Java中List集合中的重復(fù)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Java List集合內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 兴安盟| 邵阳县| 长岛县| 株洲市| 大新县| 马龙县| 永德县| 科技| 昆山市| 四会市| 九龙城区| 宜州市| 新竹县| 乌审旗| 宁津县| 潼南县| 洞头县| 金寨县| 安义县| 勃利县| 西乌珠穆沁旗| 任丘市| 伊金霍洛旗| 拉孜县| 漾濞| 大姚县| 九龙坡区| 宁德市| 正宁县| 贵港市| 山阴县| 三明市| 庄浪县| 锡林浩特市| 温泉县| 龙陵县| 灌南县| 图片| 法库县| 博乐市| 金川县|