我想将outlook电子邮件的entityID列表存储到文件中。 entityID是字符串,如:
“000000005F776F08B736B442BCF7B6A7060B509A64002000” “000000005F776F08B736B442BCF7B6A7060B509A84002000” “000000005F776F08B736B442BCF7B6A7060B509AA4002000”
你可以注意到,字符串非常相似。我想将这些字符串保存在一个集合类中,当我将其序列化为文件时,该集合类将尽可能高效地存储。你知道任何可用于此的集合类吗?
提前感谢您提供任何信息...... 格里
答案 0 :(得分:8)
框架中没有预先存在的集合类将满足您的需求,因为它们是通用的:根据定义,它们不知道它们存储的类型(例如string
),因此它们无法对其进行任何操作。
如果高效序列化是您唯一关注的问题,我建议您只需压缩序列化文件即可。像这样的数据是压缩算法的盛宴。 .NET在System.IO.Compression
中提供了gzip和deflate算法;可以通过Google轻松找到更好的算法(如果您需要)。
如果内存效率也存在问题,您可以将字符串存储在trie或radix tree中。
答案 1 :(得分:4)
您可能需要查看Radix Trie数据结构,因为这样可以有效地存储您的密钥。
就序列化到文件而言,您可以走路,然后记下每个节点。 (在下面的示例中,我使用缩进来表示树中的级别,但是您可以提出更高效的内容,例如使用控制字符来表示下降或上升。)
00000000
5F776F08B736B442BCF7B6A7060B509A
64002000
84002000
A4002000
6F776F08B736B442BCF7B6A7060B509A
32100000
以上示例是:
的集合000000005F776F08B736B442BCF7B6A7060B509A64002000
000000005F776F08B736B442BCF7B6A7060B509A84002000
000000005F776F08B736B442BCF7B6A7060B509AA4002000
000000006F776F08B736B442BCF7B6A7060B509A32100000
答案 2 :(得分:-3)