我一直在学习.NET中的集合,我遇到了术语Ordered和Unordered。我不知道它们之间的区别是什么。有人能解释一下确切的区别是什么,以及什么时候一个比另一个更受欢迎。
Ordered
Unordered
5sxhfpxr1#
In mathematical terms,一个 * 有序 * 集合就像一个序列,一个 * 无序 * 集合就像一个集合。实际上,如果顺序很重要,那么就使用有序集合,如果顺序不重要,那么就使用无序集合。举一个具体的例子:
var imageExtensions = new HashSet<string>() { "gif", "jpg", "png" }; // I might just as well have written { "jpg", "png", "gif" } -- it doesn't matter
var words = new List<string>() { "one", "small", "step", "for", "man", "one", "giant", "leap", "for", "mankind" };
在.NET基底类别库中,无序集合通常会最佳化,以便有效率地寻找集合的项目。例如,HashSet<T>.Contains是O(1)运算。另一方面,寻找List<T>中的项目需要周游清单,因此是O(n)运算。
HashSet<T>.Contains
List<T>
1条答案
按热度按时间5sxhfpxr1#
In mathematical terms,一个 * 有序 * 集合就像一个序列,一个 * 无序 * 集合就像一个集合。
实际上,如果顺序很重要,那么就使用有序集合,如果顺序不重要,那么就使用无序集合。
举一个具体的例子:
在.NET基底类别库中,无序集合通常会最佳化,以便有效率地寻找集合的项目。例如,
HashSet<T>.Contains
是O(1)运算。另一方面,寻找List<T>
中的项目需要周游清单,因此是O(n)运算。