VB.Net数组 - 当元素顺序不同时,将元素数组合并为更大的数组

时间:2010-11-23 15:37:42

标签: vb.net arrays dynamic-arrays

假设我有一个数组

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缺少的元素为空。

3 个答案:

答案 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>

通常情况下,最简单的解决方案是最好的,除非有一些原因你要在循环中反复做这件事,并且绝对需要从中榨取最大的性能。