合并两个没有重复的数组[VB.NET]

时间:2019-06-20 00:44:41

标签: vb.net

要询问的问题如下:

实施UniqueNames方法。当传递两个名称数组时,它将返回一个包含出现在一个或两个数组中的名称的数组。返回的数组应该没有重复。

例如,调用MergeNames.UniqueNames({'Ava','Emma','Olivia'},{'Olivia','Sophia','Emma'})应该返回包含Ava,Emma,Olivia,和索菲亚以任何顺序。

起始代码:


   Module Module1
       Public Class MergeNames
           Public Shared Function UniqueNames(names1() As String, names2() As  String) As String()
               Throw New NotImplementedException()
           End Function
       End Class

       Public Sub Main()
           Dim names1() As String = {"Ava", "Emma", "Olivia"}
           Dim names2() As String = {"Olivia", "Sophia", "Emma"}
           Console.WriteLine(string.Join(", ", MergeNames.UniqueNames(names1, names2))) ' should print Ava, Emma, Olivia, Sophia
       End Sub
   End Module

1 个答案:

答案 0 :(得分:1)

LINQ将是最简单的方法:

Dim combinedUniqueNames = names1.Union(names2).Distinct().ToArray()

Union将合并两个列表,Distinct将删除重复项,而ToArray从结果中创建一个新数组。就像LINQ扩展方法一样,它们都可以在任何IEnumerable(Of T)上调用。您的String数组实现了IEnumerable(Of String)

编辑:

根据Jimi的评论,我们只需要:

Dim combinedUniqueNames = names1.Union(names2).ToArray()

我想我应该已经意识到了,因为“联合”是一个集合操作,并且在数学环境中确实排除了重复项。