public class TestObject
{
string TestValue { get; set; }
bool IsDuplicate { get; set; }
}
List<TestObject> testList = new List<TestObject>
{
new TestObject { TestValue = "Matt" },
new TestObject { TestValue = "Bob" },
new TestObject { TestValue = "Alice" },
new TestObject { TestValue = "Matt" },
new TestObject { TestValue = "Claire" },
new TestObject { TestValue = "Matt" }
};
假设testList
实际上有数百万个对象。
如何最快地确保其中三个TestObjects
中的两个具有TestValue
为Matt,其IsDuplicate
被设置为true?无论给定值的实例有多少个,只有一个实例应该在过程中以false的IsDuplicate出现。
我不反对通过线程来完成此操作。如果将其转换为另一种集合类型可以更快,则集合不必是列表。
我需要保留重复项并将其标记为重复项,而不是从集合中删除它们。
进一步说,这是一个更加复杂问题的简单表达方式。所讨论的对象已经有了一个序数,我可以使用它来对它们进行排序。
在精确字符串相等性匹配的初始重复项之后,我将不得不再次遍历集合,并使用一些模糊匹配逻辑重新尝试其余部分。在去重过程中,开始存在的集合不会改变,也不会在之后改变。
最终,原始集合将被写入文件,并标记可能的重复项。
HashSet
,例如当您添加新项目时,检查它是否已经在HashSet
中,如果是,则立即将其标记为重复项? - Luaan