假设我有一个数组
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缺少的元素为空。
答案 0 :(得分:1)
你的意思是这样吗?
''// 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
中的所有元素(因此重复结果),按排序顺序。
答案 1 :(得分:0)
假设这些是字符串,如
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
答案 2 :(得分:0)
如果您的目标是框架的第4版,则可以使用SortedSet(Of T)
。
否则,最简单的解决方案可能只是创建第三个数组(或List(Of T)
),其中包含前两个数组的元素,删除任何重复项,并应用适合您应用程序的任何排序算法。 / p>
通常情况下,最简单的解决方案是最好的,除非有一些原因你要在循环中反复做这件事,并且绝对需要从中榨取最大的性能。