0

假设我有一个数组

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 的缺失元素假定为空。

4

3 回答 3

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是重复的),并按排序顺序排列。

于 2010-11-23T15:45:30.593 回答
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
于 2010-11-23T15:43:35.143 回答
0

如果您的目标是框架的第 4 版,则可以使用SortedSet(Of T).

否则,最简单的解决方案可能只是创建List(Of T)包含前两个数组元素的第三个数组(或 a ),删除所有重复项,并应用适合您应用程序的任何排序算法。

通常情况下,最简单的解决方案是最好的,除非出于某种原因,您将在一个循环中一遍又一遍地执行此操作,并且绝对需要尽可能地从中获得最大的性能。

于 2010-11-23T15:45:17.650 回答