寻找 List>> 的替代品

发布于 2024-07-25 13:43:48 字数 204 浏览 5 评论 0 原文

最终得到了这个糟糕的数据结构:

List<KeyValuePair<string, KeyValuePair<string, string>>>

它不太可能变得巨大(我估计<1K),并且我将一遍又一遍地迭代这个列表。

任何人都可以想到一些更好的内置类型替代方案吗?

Ended up with this awful data structure:

List<KeyValuePair<string, KeyValuePair<string, string>>>

It's not likely to get huge (<1K I estimate) and I am gonna iterate this list over and over.

Anyone can think of some better alternative with built-in types?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灰色世界里的红玫瑰 2024-08-01 13:43:48

最好的选择是包装您自己的 Tuple 类,有点像 在 .NET 4.0 中提供

然后你可以有一个:

List<Tuple<string,string,string>>

这很容易在.NET 2.0中编写 - 它基本上只是一个三元组值,而不是在KeyValuePair中包含2个值。 不过,.NET 2.0 中没有内置等效的三元组值。


编辑:

在阅读了您在另一篇文章中关于查询的评论后,我想我也应该提到这一点 -

即使您在 key1 中没有唯一值,您也可以通过使用以下方法显着加快任何类型的查询/搜索速度:

Dictionary<string, List<KeyValuePair<string,string>>>

然后,您可以通过第一个元素中的键查找它们的列表,而不是存储单个 KeyValuePair。 如果您需要查找具有给定第一个键的所有元素,这会快得多......

The best option would be to wrap your own Tuple class, sort of like the one shipping in .NET 4.0.

Then you could have a single:

List<Tuple<string,string,string>>

This is easy enough to write in .NET 2.0 - it's basically just a triplet of values, instead of having 2 in a KeyValuePair. There is no built-in equivelent for a triplet of values in .NET 2.0, though.


Edit:

After reading your comment about querying in another post, I thought I'd mention this as well -

Even if you don't have unique values in key1, you could dramatically speed up any type of query/search by using:

Dictionary<string, List<KeyValuePair<string,string>>>

Then, instead of storing a single KeyValuePair, you could look up the list of them via the key in the first element. This would be much, much faster if you needed to find all of the elements with a given first key...

坏尐絯℡ 2024-08-01 13:43:48
struct MrStruct
{
   public string Key1,
   public string Key2,
   public string Value1
}


List<MrStruct>;

这是假设您按照您所说的迭代顺序访问列表。 其他数据结构的搜索速度可能会更快。

struct MrStruct
{
   public string Key1,
   public string Key2,
   public string Value1
}


List<MrStruct>;

This is assuming that you are accessing the list sequentially as you did say iterate over. Potentially, other data structures could be faster for searching.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文