【发布时间】:2019-11-25 13:33:33
【问题描述】:
我的问题并不常见。让我们想象几十亿个字符串。字符串通常少于 15 个字符。在这个列表中,我需要找出唯一元素的数量。
首先,我应该使用什么对象?你不应该忘记如果我添加一个新元素,我必须检查它是否已经存在于列表中。一开始这不是问题,但是在几百万字之后它确实会减慢这个过程。
这就是为什么我认为 Hashtable 将是这项任务的理想选择,因为理想情况下检查列表只需要 log(1)。不幸的是,.net 中的单个对象只能是 2GB。
下一步将实现一个自定义哈希表,其中包含一个 2GB 哈希表列表。
我想知道也许你们中的一些人知道更好的解决方案。 (电脑的规格非常高。)
【问题讨论】:
-
“独特元素”是指字符还是字符串?字符串是一个单词吗?
-
您认为会有很多独特的元素,还是大多数字符串都可能重复?
-
最快的编码方式:将所有内容添加到 SQL Server 表并发出查询。
-
字符串中的字符限制为一个字节或更少(例如 ANSI、ASCII)或 Unicode 或...?
-
“我需要找出唯一元素的数量”——你是在计算同一个字符串的多次出现,找出该字符串是否在集合中,还是在做其他事情?
标签: c# algorithm memory collections