我遇到了一个有趣的问题,我很想得到一些输入。存储整数集来检查是否已经提到某个集合
我有一个程序,生成一组数字(基于一些预定义的条件)。每个集合最多包含6个数字,不必使用1到100之间的整数来唯一)。
我想以某种方式存储每个创建的集合,以便我可以快速检查某个集合是否具有完全相同的数字(顺序无关紧要)先前已生成。
速度在这种情况下是一个优先事项,因为在程序停止之前可能会存储高达100k个集(可能更多,但大部分时间可能更少)!有人会对我应该使用什么数据结构以及我应该如何处理这个问题有任何建议吗?
什么我现在是这样的:
排序每组将其存储到字符串的一个HashSet之前。该字符串简单地说是每个有序分隔符集合中的数字。
例如,集合{4,23,67,67,71}将被编码为字符串“4-23-67-67-71”并存储到HashSet中。然后对每个新生成的集合进行排序,编码并检查它是否存在于HashSet中。
谢谢!
如果你有记忆,HashSet是一个不错的选择。 – Starkey 2012-07-14 14:27:40
它可以包含重复项时不是一个集合。称它为multiset或包。 – 2012-07-14 14:48:51
谢谢菲利普,我不确定它的正确术语是什么。 – Mick 2012-07-14 14:54:43