我对C#还比较新,但是通过论坛的帖子发现在特定情况下使用HashSet
而不是List
有一些优势。
我的情况并不是要在单个List
中存储大量数据,而是经常需要检查其中的成员。
关键在于我确实需要遍历它,但它们存储或检索的顺序实际上并不重要。
我已经阅读过了使用for each循环比for next循环要慢,那么我应该如何以最快的方式解决这个问题呢?
我正在使用列表进行大量迭代,并且在每个位置执行不同的代码。最常见的情况是当前列表包含点坐标,然后我用它们引用一个二维数组,在此基础上根据列表的条件执行某些操作。
我正在进行大量的.Contains()
检查,这肯定会影响列表的性能,因此至少比较一下与HashSet
的性能会很方便。
编辑:我目前正在使用列表,在多个位置进行迭代,并且在每个位置执行不同的代码。最常见的情况是当前列表包含点坐标,然后我用它们引用一个二维数组,在此基础上根据列表的条件执行某些操作。
如果没有直接回答我的问题,那也没关系,但我认为除了foreach
循环之外,可能还有其他遍历HashSet
的方法。目前我不知道还有哪些其他方法、它们提供的优势等等。假设还有其他方法,我还假设会有一种通常的首选方法,只有在不适合需求时才会被忽略(我的需求非常基本)。
至于过早地进行优化,我已经知道像我这样使用列表是一个瓶颈。如何解决这个问题是我卡住的地方。但我并不想通过反复测试来重新发明轮子,只是为了发现我已经以最好的方式处理了它(这是一个需要投入超过3个月时间的大型项目,列表无处不在,但肯定有些列表不希望出现重复,其中有很多数据,不需要按任何特定顺序存储等等)。