如何高效快速過濾萬級以上的資料?

2022-08-12 02:51:11 字數 1319 閱讀 6842

今天是聖誕節耶!jingle bell jingle bell .....

上週遇到乙個問題,用list集合removeall方法去除滿足條件的資料,結果那真是有點慢,慢的我都自慚形穢了,本以為可以翹著二郎腿,結束任務,結果出現這大的問題,嚇得我立馬放下腿。

一查發現萬級的資料中過濾萬級左右資料,嗯,這也是第一次碰到,沒經驗,不知者無過。在我努力的結晶下,結果還是滿意的。

真相就是用haseset的contains 過濾代替list的removeall條件過濾,為什麼呢,那就要看原始碼是如何實現的了。

所以今天就來傳授經驗,接招。

兩種方法做對比。時間是多次執行取的平均值,保證有效性,從統計表中可以看到,資料量越大,差異越明顯。

資料量 

過濾量list過濾所用time(ms)

hashse過濾所用time(ms)105

1左右1左右

10050

1左右 有時候2

1左右1000

50018左右

1左右 有時候2

10000

5000

1650左右

2~4左右

100000

50000

195439左右

30左右

所以你知道當時有多慢了吧。

測試demo,主要**:

public listgetresulthashdata(listalllist, hashsetfilterlist)

}return

molist;

}

注意的是,model要重寫gethashcode以及equeals,不重寫就沒有過濾效果原因就是預設比較的是值,在比較其他自定義物件時就是比較引用位址。

重寫之後目的就是比較兩個物件的value值是否相等

有詳細解釋

public

class

model

public

string name

public

string desc

public

override

intgethashcode()

public

override

bool equals(object

obj)

}

你沒看錯,靈魂**就幾行,就是這麼的簡單。嗯,下班了

如何快速 高效地閱讀文獻資料

1。由點到面。選工作實踐中的疑點,熱點,由乙個小枝節,檢索較全的文獻,一般近期的20 篇左右已經相當多了。之所以不必在意3年以前的,是因為知識更新非常快,且網上能查到的多為近幾年的全文。學習別人是怎麼發現解決問題的。知道目前對這個問題的共同看法,和分歧。然後,擴充套件開,根據興趣和研究的目的,知道,...

如何快速高效的群發Email

如何快速高效的 email 宣傳中,email營銷是成本最低,而回報率又相對比較高的方法.特別對電子商務型別的 是最行之有效的方法.我們不僅常向自己的會員傳送email,手裡也會有一批資料巨大的email資料.那麼如何批量的快速的向這些人傳送我們的email呢.經過我們寫程式,批量一封封的發,速度大...

如何在生產環境刪除百萬級以上的資料

公司的使用者被人惡意註冊了,user id是連續著的,這些使用者現在要清理掉,但是資料量太大,如何快速生成200w的delete語句呢?ps 生產環境不建議delete from user where user id and user id sqlyog環境下快速生成語句 在伺服器上 select ...