[問題] dictionary 使用問題
這個問題比較像是如何設計。
系統會陸續收到很多筆資料(一天約兩千萬筆),我想判斷這些資料是否有重複。
通常只需要和當天資料比較,也就是說今天資料不需要和兩天前的比。
原先我是使用 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)
想請問有沒有更好的方式或建議?
--
Mars-瑪爾斯群英傳,為一種多人的地下城文字網路遊戲(MUD),
以西方魔法奇幻風格為背景,讓玩家扮演各種職業進行冒險、解謎。
IP:218.161.35.207 8888 討論板: PTT mud_mars
Eplis @ Mars
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.17.139
→
03/18 13:39, , 1F
03/18 13:39, 1F
→
03/18 13:47, , 2F
03/18 13:47, 2F
→
03/18 15:35, , 3F
03/18 15:35, 3F
→
03/18 15:35, , 4F
03/18 15:35, 4F
→
03/18 15:35, , 5F
03/18 15:35, 5F
→
03/18 18:23, , 6F
03/18 18:23, 6F
→
03/18 19:00, , 7F
03/18 19:00, 7F
→
03/18 19:01, , 8F
03/18 19:01, 8F
→
03/18 19:02, , 9F
03/18 19:02, 9F
→
03/18 19:02, , 10F
03/18 19:02, 10F
→
03/18 19:03, , 11F
03/18 19:03, 11F
推
03/18 20:29, , 12F
03/18 20:29, 12F
推
03/18 20:45, , 13F
03/18 20:45, 13F
→
03/18 21:03, , 14F
03/18 21:03, 14F
很抱歉我補充一下,因為資料只會比對+-1天,所以舊的資料是可以清除的
我有想過一個方法,但是應該不是很好
在資料量進來少的時候,做foreach,判斷資料時間 < -1天,就remove
※ 編輯: eplis 來自: 124.218.24.252 (03/18 21:24)
推
03/18 21:33, , 15F
03/18 21:33, 15F
推
03/18 22:13, , 16F
03/18 22:13, 16F
是的,有用的資料就是"當下時間"到"當下時間的前一天",其他都已經沒用了
→
03/18 22:26, , 17F
03/18 22:26, 17F
→
03/18 22:27, , 18F
03/18 22:27, 18F
→
03/18 22:34, , 19F
03/18 22:34, 19F
→
03/18 22:36, , 20F
03/18 22:36, 20F
→
03/18 22:37, , 21F
03/18 22:37, 21F
→
03/18 22:41, , 22F
03/18 22:41, 22F
※ 編輯: eplis 來自: 124.218.24.252 (03/19 00:22)
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章