本發(fā)明涉及C#
技術(shù)領(lǐng)域:
,特別涉及一種比較一組大數(shù)據(jù)在另一組大數(shù)據(jù)中是否存在方法。
背景技術(shù):
:C#是微軟推出的一種基于.NET框架的、面向?qū)ο蟮母呒壘幊陶Z言。Array.indexOf函數(shù)搜索Array對象的指定元素并返回該元素的索引。此函數(shù)是靜態(tài)的,可在不創(chuàng)建對象實例的情況下調(diào)用。傳統(tǒng)的兩組數(shù)據(jù)比較的方法較包括Array.indexOf、Contains、Intersect、Hashtable等,測試結(jié)果都存在比較慢的問題,比較時間幾分鐘才能完成,數(shù)據(jù)量到達千萬級別,直接導致程序崩潰。技術(shù)實現(xiàn)要素:本發(fā)明解決的技術(shù)問題在于提供一種快速比較一組大數(shù)據(jù)在另一組大數(shù)據(jù)中是否存在方法,解決快速比較大數(shù)據(jù)集合的問題,在相同測試環(huán)境下,千萬數(shù)據(jù)集合比較可以在毫米范圍內(nèi)完成。本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:所述的方法包含以下幾個步驟:步驟一、創(chuàng)建集合List1和List2,步驟二、計算集合List1和List2中的最大值,步驟三、隨機初始化集合List1和List2;步驟三、初始化Boolean類型集合C,將集合List1按順序判斷在集合List2中是否存在并記錄在Boolean類型集合C中;步驟四、新建臨時的輔助變量tempList1,循環(huán)List2,把List2中的值作為List1的下標,對應(yīng)位置標記為true,驗證元素是否存在;步驟五、循環(huán)List1,直接比較下標,驗證是否存在,如果存在,將集合C對應(yīng)位置標記為true,集合C中標記為true的即List1在List2中存在的值。所述的List1,List2的長度設(shè)定為10000000;集合List1和List2中的最大值設(shè)定為為11000000。所述的方法的測試環(huán)境服務(wù)器配置為4核CPU,4G內(nèi)存。本發(fā)明的有益效果:實現(xiàn)了快速比較大數(shù)據(jù)集合的問題,在相同測試環(huán)境下,千萬數(shù)據(jù)比較可以在毫米范圍內(nèi)完成。附圖說明下面結(jié)合附圖對本發(fā)明進一步說明:圖1為本發(fā)明的方法流程圖。具體實施方式如圖1所示,本發(fā)明所述的方法包含以下幾個步驟:步驟一、創(chuàng)建集合List1和List2,假設(shè)List1,List2的長度為10000000,Int32length=10000000;//List1,List2的長度long[]List1=newlong[length];long[]List2=newlong[length];步驟二、計算集合List1和List2中的最大值,假設(shè)最大值為11000000Int32maxValue=11000000;//元素最大值步驟三、隨機初始化集合List1和List2。步驟三、初始化集合Boolean類型集合C,將集合A按順序判斷在集合List2中是否存在并記錄在Boolean型的集合C中。Boolean[]C=newBoolean[length];步驟四、新建臨時的輔助變量tempList1,循環(huán)List2,把List2中的值作為List1的下標,對應(yīng)位置標記為true,驗證元素是否存在步驟五、循環(huán)List1,直接比較下標,驗證是否存在,如果存在,將集合C對應(yīng)位置標記為true,C中標記為true的即List1在List2中存在的值。當前第1頁1 2 3