楼主:
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)
想请问有没有更好的方式或建议?