gpt4 book ai didi

c# - 从字符串列表中获取不同且有序的成员 - linq 或 hashset for unique 哪个更快/更适合

转载 作者:行者123 更新时间:2023-11-30 16:58:19 25 4
gpt4 key购买 nike

我有一个很大的字符串列表(大约 5k-20k 个条目),我需要对其进行排序并从中删除重复项。

我现在用 2 种方法完成了这项工作,一次使用哈希集,一次仅使用 linq。使用该数量的条目进行的测试并没有显示出很大的差异,但我想知道哪种方式以及哪种方法更适合。

对于方法(myList的数据类型为List):

Linq:我正在使用 1 条 linq 语句对列表进行排序并从中获取不同的值。

myList = myList.OrderBy(q => q).Distinct().ToList();

Hashset:我正在使用 hashset 删除所有重复项,然后对列表进行排序

myList = new HashSet<String>(myList).ToList<String>();
myList = myList.OrderBy(q => q).ToList();

就像我说的那样,我所做的测试对两种方法消耗的时间大致相同,但我仍然想知道一种方法是否比另一种方法更好,如果是这样,为什么(代码是针对高性能部分的,我需要得到每一毫秒我都可以摆脱它)。

最佳答案

如果你真的关心每一纳秒,那么

myList = myList.Distinct().OrderBy(q => q).ToList();

可能略快于:

myList = myList.OrderBy(q => q).Distinct().ToList();

如果有大量重复。

LINQ 方法更具可读性,并且与显式创建 HashSet<T> 具有相似的性能正如其他人所说。事实上,如果原始 List 已经排序,它可能会稍微快一些,因为 LINQ 方法将在排序前保留初始顺序,同时显式创建 HashSet<T>。将以未定义的顺序枚举。

关于c# - 从字符串列表中获取不同且有序的成员 - linq 或 hashset for unique 哪个更快/更适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com