私が配列を持っていると仮定します
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加えて、に表示される(したがって結果に重複する)すべての要素をソートされた順序で含む配列が作成されます。myArray2myArray1
それらが文字列であると仮定すると、
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)。
それ以外の場合、最も簡単な解決策は、最初の2つの配列の要素を含む3番目の配列(またはList(Of T))を作成し、重複を削除して、アプリケーションに適した並べ替えアルゴリズムを適用することです。
そして、多くの場合、これをループで何度も繰り返すことになり、可能な限り最高のパフォーマンスを引き出す必要がある場合を除いて、最も単純なソリューションが最適です。