首先,我想说我的编程知识非常基础,并且随着你的风格学习。如果我听起来很愚蠢,请耐心等待。
所以我有一个多维字符串数组,其中一部分是:
X Y
4,1 Adelaide
4,2 Interlagos
4,3 Sakhir
4,4 Hungaroring
4,5 Estoril
4,6 Barcelona
4,7 Silverstone
4,8 Mugello
4,9 Hockenheim
4,10 Monte Carlo
在上表中,X和Y是数组的2维。
现在我有另一个字符串数组,其中包含来自上述数组的X维的元素,并且未排序。例如,
4,6
5,15
3,7
10,12
等...
现在我要做的是编写一个查看数组#2的代码,并从数组#1的维Y中指定一个相应的元素。
例如,当代码在数组#2中遇到4,6时,我希望代码分配相应的值,即巴塞罗那。
我正在寻找基本的片段或算法。我自己会做其余的事。
提前致谢!
答案 0 :(得分:6)
听起来像表1应该是Dictionary<string, string>
,将“4,6”映射到“巴塞罗那”。然后你可以这样做:
// However you want to populate your data
Dictionary<string, string> mapping = ...;
List<string> values = keys.Select(key => mapping[key]).ToList();
请注意,如果未映射任何键,这将引发异常 - 如果这不是您想要的,请澄清要求。
目前尚不清楚如何获取此数据,或者您的“多维字符串数组”是string[,]
还是string[][]
。如果 以字符串数组的形式接收它,请提供更多详细信息,我们可以解释如何将其转换为字典。
答案 1 :(得分:1)
你应该使用字典。字典在内部是一个数组。如果您移交一个键值对(插入它),则会将一个所谓的哈希函数应用于该键。该函数返回一个整数i。该值存储在array [i]中。如果你想从字典中获取一个值,你只需要移交密钥。在内部应用散列函数,计算i并返回array [i]。这听起来非常开销,但是对于大型数组来说,搜索密钥的速度很慢(如果按键排序则为O(log n),如果根本没有排序则为O(n) - 如果你知道O符号),其中在大多数应用程序中,哈希函数可以非常快。因此即使使用大型字典访问值也很快。 (在字典中有一些技巧,处理两个键导致相同整数i的情况,但如果您不想自己实现字典,则不必太在意它)
Dictionarys也被称为其他语言的地图或哈希图。
答案 2 :(得分:1)
我不确定我是否正确地解释了你的问题......
你的阵列#2,你是说你要用“巴塞罗那”替换它的元素(比如说“4,6”)?
如果是这样的话那么:
循环遍历数组#2,对于每个元素使用String.split()从中获取两个数字部分(例如“4”和“6”)。然后使用Integer.parseInt()将它们从String转换为int(称为a,b)并将这些int用作数组#1的索引,如array1 [a] [b]以获取Y值。
我假设你真的想要使用数组,因为这些数字很小且有界限,否则使用字典作为其他答案的建议......
答案 3 :(得分:1)
如果您必须将第一组数据作为2D数组接收,请按以下步骤将其转换为字典:
Dictionary<string, string> dic = new Dictionary<string,string>();
for (int i = 0; i < firstArray.GetLength(0); i++)
{
dic.Add(firstArray[i, 0], firstArray[i, 1]);
}