Vb.net 最佳且简单的数据结构
我正在尝试在vb.net中创建以下矩阵,以便在处理过程中可以获得字母表的匹配分数,例如: A和N的匹配是什么?我将查看我的内置矩阵并返回-2 同样,P和L的匹配是什么?我将查看我的内置矩阵并返回-3 请告诉我该怎么做,我正在尝试使用嵌套字典,如下所示:Vb.net 最佳且简单的数据结构,vb.net,Vb.net,我正在尝试在vb.net中创建以下矩阵,以便在处理过程中可以获得字母表的匹配分数,例如: A和N的匹配是什么?我将查看我的内置矩阵并返回-2 同样,P和L的匹配是什么?我将查看我的内置矩阵并返回-3 请告诉我该怎么做,我正在尝试使用嵌套字典,如下所示: Dim myNestedDictionary As New Dictionary(Of String, Dictionary(Of String, Integer))() Dim lTempDict As New Dictionary(Of St
Dim myNestedDictionary As New Dictionary(Of String, Dictionary(Of String, Integer))()
Dim lTempDict As New Dictionary(Of String, Integer)
lTempDict.Add("A", 4)
myNestedDictionary.Add("A", lTempDict)
另一种方法是从基于文本的文件中读取矩阵,然后填充二维数组
谢谢
(来源:)使用二维数组,为字母表创建一个映射作为枚举,该枚举也将用作数组的索引:
public enum AlphaBet
{
A = 0,
R = 1,
...
}
// Init the array
int[][] scores = ...;
int score = scores[AlphaBet.A][AlphaBet.N]; // score = -2
取一个将字符映射到int的字典。int必须是连续的。然后以2d数组为例,就是这样。首先,您可以在字典中查找两个字符的索引,然后转到数组,我认为使用带有两个字符键的非嵌套字典会更简单
myDictionary.add("AA", 4)
为什么要创建枚举而不是简单地使用
char
作为键?@Frederic-我不明白。如何使用char
作为键?我想这是因为使用的字符数量有限。构建一个覆盖A-Z中所有字符的数组会消耗太多内存。另一种方法是使用索引查找方法,只存储所用字符的索引,然后。。。。这正是Enum提供的功能。@Frederic-这样您就可以将数组索引引用为字母表位置。@Oded:是的,我后来意识到您为什么要这么做;我以前浏览代码的速度太快了。这是有道理的(即使我自己可能会选择另一种解决方案)。你介意与我们分享一下你将使用它的目的吗?这是正确的,但考虑到数据的大小,我认为分类列表可能会做得更好。谢谢Carl,这绝对是“简单”的解决方案,适用于我目前的情况。但是它是对匹配值进行硬编码的,如果我的矩阵随着时间的推移而变化,该怎么办。@anshu,嵌套字典如何更好地处理随时间的变化?我看不出用这种方法处理它的优点或困难。如果AA更改为保持7而不是4,您只需更改它。“但我可能误解了。”卡尔,我同意你的说法。实际上,我需要从输入文本文件(包含矩阵)中读取值,然后循环执行以下操作:myDictionary.add(“AA”,4)等等。