我正在寻找一种方法来按照添加它们的顺序Dictionary枚举它KeyValuePair.现在,Dictionary的文档明确指出:
出于枚举的目的,字典中的每个项目都被视为
KeyValuePair<TKey, TValue>表示值及其键的结构.返回项的顺序未定义.
我发现我需要的是一个OrderedDictionary,但我是怀疑论者,我决定亲自尝试:
OrderedDictionary od = new OrderedDictionary();
Dictionary<String, String> d = new Dictionary<String, String>();
for (int i = 0; i < 10; i++)
{
od.Add("key" + i, "value" + i);
d.Add("key" + i, "value" + i);
}
System.Console.WriteLine("OrderedDictionary");
foreach (DictionaryEntry de in od) {
System.Console.WriteLine(de.Key + ", " + de.Value);
}
System.Console.WriteLine("Dictionary");
foreach (var tmp in d) {
System.Console.WriteLine(tmp.Key + ", " + tmp.Value);
}
Run Code Online (Sandbox Code Playgroud)
输出:
OrderedDictionary
key0, …Run Code Online (Sandbox Code Playgroud) 我想使用以下内容在Map中打印一个有序列表:
Map<Float, String> mylist = new HashMap<>();
mylist.put(10.5, a);
mylist.put(12.3, b);
mylist.put(5.1, c);
SortedSet<Float> orderlist = new TreeSet<Float>(mylist.keySet());
for (Float i : orderlist) {
System.out.println(i+" "+mylist.get(i));
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印:
5.1 c
10.5 a
12.3 b
Run Code Online (Sandbox Code Playgroud)
但是如何以相反的顺序打印订单列表,如下所示:
12.3 b
10.5 a
5.1 c
Run Code Online (Sandbox Code Playgroud) 我正在寻找 .Net 类,它基本上将:
是否有一个现有的 .Net 类可以做到这一点?
我知道HashSet(不保证顺序),SortedSet(内容的顺序),但它们不符合我的需要。我没有任何其他需求(例如 aStack或 a Queue)。
我目前的替代方法是拥有List<>并使用Contains(...)之前添加和删除数据。
.net ×2
c# ×2
collections ×1
dictionary ×1
hashset ×1
java ×1
linked-list ×1
list ×1
set ×1
sortedset ×1
treeset ×1