【问题标题】:Is there something faster than 3D array?有比 3D 数组更快的东西吗?
【发布时间】:2011-02-11 19:30:29
【问题描述】:

我问这个问题是因为我不知道使用什么类/api 来实现我想要的。

我有 2 个字符串关联,但我需要一种不需要知道通过第三个值调用这 2 个关联字符串值的方法。

我首先想到了一个 3d 数组,但我想知道是否有更快的东西并且已经构建用于 C#。起初我想到了一个字典,但认为你必须知道键值。

有什么想法吗?

编辑:这里有更多细节......

例如,我有一个列表

苹果,苹果汁
香蕉,香蕉汁
橙汁、柑橘汁
柠檬,柑橘汁
...

现在在另一个程序中有水果,我需要将它们转换成适当的果汁。所以我需要遍历所有列表。

【问题讨论】:

  • 一个Dictionary,多个Dictionarys,或者类似的东西可能是要走的路,但我们需要更多细节来决定。
  • 我不知道 3d 数组与您描述的其他内容有什么关系?即使使用您当前的代码想法,改进的描述也可能会很好。
  • 一个 3 维数组。无论如何,似乎字典可以完成这项工作,所以我会使用它。

标签: c# arrays


【解决方案1】:

您不需要密钥来遍历字典。但是,如果您只使用该值,那么您接收信息的顺序很可能与您输入的顺序不同。

话虽如此,您能否最具体地说明您的需求。我不确定我是否理解你想要做什么。

【讨论】:

  • 顺序无关紧要。我所需要的只是能够通过协会
  • 有带字典的前向迭代器吗?
  • 字典将有一个值和一个可以与迭代器一起使用的键集合。然而,一个字典没有任何顺序,所以它没有直接的顺序。
【解决方案2】:

有水果,我需要 将它们转化为适当的 果汁。

这听起来就像你有一个 key(水果)并且你想获得它对应的 value(果汁)。那么你只需要一个Dictionary<string, string>

以下代码自我第一次发布以来已更新。

// OK, so we'll say this comes from an external program. I am just constructing
// it here for illustration.
var fruitJuices = new Dictionary<string, string>
{
    { "Apple", "Apple juice" },
    { "Banana", "Banana juice" }
    /* etc. */
};

// This list comes from the user.
List<string> fruits = GetFruitsFromUser();

foreach (string fruit in fruits)
{
    string matchingFruitJuice;
    if (fruitJuices.TryGetValue(fruit, out matchingFruitJuice))
    {
        // Do whatever you need with this juice.
        CreateFlavor(matchingFruitJuice);
    }
    else
    {
        // Either report on the non-existence of this flavor of juice,
        // or possibly just do nothing.
    }
}

Dictionary&lt;TKey, TValue&gt; 类被实现为 hash table,它具有非常高效的 O(1) 键查找。

出于好奇,您对使用 3D 阵列的计划是什么?

【讨论】:

  • 因为我不能调用fruitJuices[fruit]。我必须在不知道键名的情况下浏览字典。
  • @Wildhorn:你说“在另一个程序中有成果”;如果你不认识他们,你的意思是什么?我假设您的意思是,例如,其他程序提供 string 值。
  • 是的,这很难解释。用户提供了一个列表,它将检查适当的水果是否在其他程序中,如果是,则制作果汁,如果不是,则不执行任何操作。但是我,我不知道果汁配方的数量,也不知道味道。所以我需要一种方法来遍历水果/果汁关联列表。
  • @Wildhorn:我仍然不明白你为什么需要迭代。在我看来,对于用户提供的列表中的每个fruit,您都可以调用fruitJuices.TryGetValue(fruit, out fruitJuice)并按照您所说的做:“如果[存在]合适的水果,则制作果汁,如果没有[该方法返回@ 987654328@] 什么都不做。”
  • 是的,提供了列表,但我的意思是,我应该使用字符串数组来遍历水果列表吗?这就是为什么我问字典好不好,因为我不想必须使用 2 个单独的东西。
猜你喜欢
  • 2010-10-05
  • 2012-04-15
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多