【发布时间】:2012-07-14 14:20:48
【问题描述】:
我遇到了一个有趣的问题,我很想得到一些意见。
我有一个程序可以生成一组数字(基于一些预定义的条件)。每个集合最多包含 6 个数字,这些数字不必唯一,整数范围为 1 到 100)。
我想以某种方式存储创建的每个集合,以便我可以快速检查以前是否生成了具有完全相同数字(顺序无关紧要)的某个集合。
在这种情况下,速度是一个优先事项,因为在程序停止之前可能存储了多达 100k 组(可能更多,但大多数时间可能更少)!有人对我应该使用什么数据结构以及我应该如何解决这个问题有任何建议吗?
我目前拥有的是这样的:
在将每个集合存储到字符串的 HashSet 之前对其进行排序。字符串只是排序集中的每个数字,带有一些分隔符。
例如,集合 {4, 23, 67, 67, 71} 将被编码为字符串“4-23-67-67-71”并存储到 HashSet 中。然后对生成的每个新集合进行排序、编码并检查它是否存在于 HashSet 中。
谢谢!
【问题讨论】:
-
HashSet 是一个不错的选择,如果你有足够的记忆力。
-
当它可以包含重复时,它不是一个集合。称它为 multiset 或 bag 。
-
谢谢 Phillip,我不确定它的正确术语是什么。