【发布时间】:2014-08-18 13:26:49
【问题描述】:
我有一个几乎每秒都在变化的列表。我想检查列表,如果它变得太大。第一步是从列表中删除重复条目。
有很多方法可以做到这一点。我见过HashTables、LINQ 和其他人。问题是我需要一个快速的方法来完成这个。
列表中可能有很多条目,如果可能的话,用户不应该看到应用程序冻结,因为应用程序正在显示动画。
我不知道是否可以使用HashTables,因为如果可能的话,列表内对象的顺序应该保持不变。
我尝试使用 LINQ 和 GroupBy,但我正在使用 Visual Studio 2008,它不包含该 LINQ 语句。
对象不是很简单。想象一个物体是一辆汽车。它可以有制造商、制造时间、型号名称等。
我只想查看制造商和型号名称是否在列表中的两倍。制造时间并不重要,应该忽略。
最后我想从列表中删除所有重复条目。
我很高兴收到建议。如果您有任何想法,请将它们写下来,我们会看到。
【问题讨论】:
-
如果您想保留列表内的顺序,还有其他可用的集合类型。我想到了 SortedList 和 SortedDictionary。查看 .NET 集合类型,看看是否符合您的要求。
-
我必须保持从进入时间开始的顺序。如果列表中有 3 个整数,它可以是这样的:2,3,1。它不是按值排序的。
-
啊,好的。一种解决方案可能是同时使用列表和字典。首先不要将重复的项目放在列表中,而不是事后查找它们。或者您还需要一个字典来跟踪他们的索引。
-
这是个好主意。也许我可以在添加之前验证条目。如果它是重复的条目,我可以忽略它。我不知道为什么我没有想到这一点。
-
一个(未排序的)列表不仅在查找项目时很慢,而且从中删除项目也很慢。因此字典 ;)
标签: c# winforms visual-studio-2008 .net-3.5