I'm not an expert in C# and LINQ.
I have a Dictionary
, which I understand a hash table, that is, keys are not sorted.
dataBase = new Dictionary<string, Record>()
Record
is a user-defined class that holds a number of data for a given key string.
I found an interesting example that converts this Dictionary
into a sorted dictionary by LINQ:
var sortedDict = (from entry in dataBase orderby entry.Key ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
This code works correctly. The resulting sortedDict
is sorted by keys.
Question: I found that sortedDict
is still a hash table, a type of:
System.Collections.Generic.Dictionary<string, Record>
I expected the resulting dictionary should be a sort of map
as in C++ STL, which is generally implemented as a (balanced) binary tree to maintain the ordering of the keys. However, the resulting dictionary is still a hash table.
How sortedDict
can maintain the ordering? A hash table can't hold the ordering of the keys. Is the implementation of C#'s Generic.Dictionary
other than a typical hash table?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…