假设我有一个数组
myArray1 = { A, B, C, D, E, F, ...., T}
我有另一个包含 myArray1 元素的子集,但顺序可能会有所不同
myArray2= { A、C、H、G、F、M、R、S、T}
我可以独立确定 myArray1 和 myArray2 中数组元素的顺序。
如何以正确的元素顺序将 myArray2 合并到 myArray1 中?myArray2 中 myArray1 的缺失元素假定为空。
假设我有一个数组
myArray1 = { A, B, C, D, E, F, ...., T}
我有另一个包含 myArray1 元素的子集,但顺序可能会有所不同
myArray2= { A、C、H、G、F、M、R、S、T}
我可以独立确定 myArray1 和 myArray2 中数组元素的顺序。
如何以正确的元素顺序将 myArray2 合并到 myArray1 中?myArray2 中 myArray1 的缺失元素假定为空。
你的意思是这样的吗?
''// Contains only the subset of myArray1 that is also in myArray2
Dim intersection As New SortedSet(Of Char)(myArray1)
intersection.IntersectWith(myArray2)
''// Merge back into the first array via a sorted list:
Dim sorted As New List(Of Char)(myArray1)
sorted.AddRange(intersection)
sorted.Sort()
Dim result As Char() = sorted.ToArray()
这将产生一个数组,其中包含 的所有元素myArray1
,以及其中的所有元素(myArray2
因此在结果中myArray1
是重复的),并按排序顺序排列。
假设这些是字符串,如
myArray1 = { "A", "B", "C", "D", "E", "F", …., "T"}
然后
dim d as new dictionary(of string,something)
for each s as string in myarray1
if not d.containskey(s) then
d.add(s,something)
end if
next
for each s as string in myarray1
if not d.containskey(s) then
d.add(s,something)
end if
next
for each s as string in d.keys
debug.writeline s
next
如果您的目标是框架的第 4 版,则可以使用SortedSet(Of T)
.
否则,最简单的解决方案可能只是创建List(Of T)
包含前两个数组元素的第三个数组(或 a ),删除所有重复项,并应用适合您应用程序的任何排序算法。
通常情况下,最简单的解决方案是最好的,除非出于某种原因,您将在一个循环中一遍又一遍地执行此操作,并且绝对需要尽可能地从中获得最大的性能。