English 中文(简体)
What is the most efficient keyvalue pair for ordering?
原标题:
  • 时间:2009-11-13 03:16:06
  •  标签:
  • c#

Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?

最佳回答

You need to be more specific about the requirements:

  • Do you still need to be able to look up by key efficiently?
  • Should it just maintain the insertion order (1st, 2nd etc), or allow arbitrary insertion points?
  • Do you want to allow duplicate keys?

I suspect that maintaining a List<TKey> or LinkedList<TKey> along with a Dictionary<TKey, TValue> will be the best/simplest route if you still need to look them up - otherwise a List<KeyValuePair<TKey, TValue>> would work fine.

For the first option, you could encapsulate this in a type implementing IDictionary<TKey, TValue>. You may actually want to make it a LinkedList<KeyValuePair<TKey, TValue>> and a Dictionary<TKey, LinkedListNode<KeyValuePair<TKey, TValue>>> to make it efficient to iterate over keys, values or entries, and to be able to handle removals efficiently.

问题回答

Have a look at System.Collections.Generic.SortedDictionary and System.collections.Generic.SortedList.

Sorted dictionary orders the pairs, sorted list orders the keys and values independently.

you can use:

KeyValuePair<object, object>[] objects;




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签