作者:
eplis (Eplis)
2014-03-18 13:29:20這個問題比較像是如何設計。
系統會陸續收到很多筆資料(一天約兩千萬筆),我想判斷這些資料是否有重複。
通常只需要和當天資料比較,也就是說今天資料不需要和兩天前的比。
原先我是使用 dictionary儲存,收到資料就 add 進 dictionary,
再使用 containskey 方法來做為重複判斷。
目前問題出在當系統運作幾天後,這個dictionary內的資料量會變得很大
而不需要被比較的資料仍舊存在(如上面所說,要判斷重複僅須和資料的+-1天相比)
我想到用 remove(dictionary.keys.first)方式,但是新進的資料就會被放在 first
一旦下一次 remove時就會刪到較新的資料
ex:
dic.add("1",1);
dic.add("2",2);
dic.add("3",3);
dic.remove(dic.keys.first);
dic.add("4",4);
印出結果..
4,4
2,2
3,3
下一次 remove 4,4就會被刪除了
我有想到用sortedDictionary,但是他的速度慢很多,一個是 O(log n),一個是O(1)
想請問有沒有更好的方式或建議?