java較大數(shù)據(jù)量取差集如何是list.removeAll優(yōu)化性能-創(chuàng)新互聯(lián)

java 較大數(shù)據(jù)量取差集如何是list.removeAll優(yōu)化性能?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

新沂網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,新沂網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為新沂1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的新沂做網(wǎng)站的公司定做!

List.removeAll效率低原因:

List.removeAll效率低和list集合本身的特點有關(guān) :

List底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢

1.List.contains()效率沒有hashset高

arrayList.removeAll底層是for循化調(diào)用contains方法。arrayList雖然用get(index)方法查詢效率高,但是若用contains方法查詢對象元素,Set集合應(yīng)該比List效率要高。

因為hashset的contains方法其實是先調(diào)用每個元素的hashCode()方法來返回哈希碼,如果哈希碼的值相等的情況下再調(diào)用equals(obj)方法去判斷是否相等,只有在這兩個方法所返回的值都相等的情況下,才判定這個HashSet包含某個元素,而list直接調(diào)用equals(obj)方法.所以hashset效率更高。

2.arrayList.remove()效率沒有l(wèi)inkedList刪除效率高

arrayList底層采用數(shù)組每刪除一下元素數(shù)據(jù)后面的元素都要往前移動效率低消耗的資源也大,linkedList鏈表刪除元素只要改變前后節(jié)點的位置信息

3.采用Iterator迭代器,這種方式我們僅需要對iterator進行循環(huán),然后對需要刪除的元素執(zhí)行iterator.remove(iterator.next()),而無需關(guān)注下標的問題

改進代碼

  LinkedList linkedList= new LinkedList(src);//大集合用linkedlist
	HashSet hashSet= new HashSet(oth);//小集合用hashset
	Iterator iter = linkedList.iterator();//采用Iterator迭代器進行數(shù)據(jù)的操作
	while(iter.hasNext()){
		if(hashSet.contains(iter.next())){
			iter.remove();			
			}	
		}

網(wǎng)頁題目:java較大數(shù)據(jù)量取差集如何是list.removeAll優(yōu)化性能-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://bm7419.com/article24/dsecje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司網(wǎng)頁設(shè)計公司、微信小程序、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)