【问题标题】:Convert integer hashset to a integer array将整数哈希集转换为整数数组
【发布时间】:2015-12-01 18:11:20
【问题描述】:

所以我制作了一个哈希集,其中包含 - 你已经猜到了 - 整数。现在我需要把它转换成一个数组,所以我可以引用每个数组“单元格”并在进程中使用哈希集中的值。

目前我像这样添加到哈希集中:

 While NumbersToRemember.Count < 1
            RandomNumber = Random.Next(2, 6)
            If NumbersToRemember.Add(RandomNumber) then ...

我尝试过使用NumbersToRemember.ToArray(),但它没有按预期工作。

有什么建议吗?

注意:有关解决方案,请参阅 JerryM 的评论。

【问题讨论】:

  • 你试过.CopyTo()吗?
  • 您无需告诉我们您正在使用 vb.net。由于您的标签和语法,大多数人都可以分辨出来。所以我把它编辑了。
  • @Plutonix 我尝试过 .CopyTo() 但是,在输出数组时,我将哈希集复制到它只输出零。
  • 您可以像引用数组成员一样引用 HashSet 的成员。例如,dim i as integer = NumbersToRember(0)。也许您根本不需要数组。但无论如何,ToArray 应该可以工作。
  • 你能定义“没有按预期工作”吗?

标签: arrays vb.net hashset


【解决方案1】:

甚至没有显示完整的循环,因此很难判断可能会发生什么。 cmets 中的it outputs only zeros 表示其他可能有问题。测试:

Dim hs As New HashSet(Of Int32)
Dim temp As Int32

For n As Int32 = 1 To 10
    temp = rng.Next(2, 16)
    If hs.Contains(temp) = False Then
        hs.Add(temp)
    End If

Next

Dim nums = hs.ToArray
Console.WriteLine("Vals: {0}", String.Join(", ", hs.ToArray()))
Console.WriteLine("Nums: {0}", String.Join(", ", nums))

输出:

数值:2、7、14、11、12、10
数字:2、7、14、11、12、10

很难说你想要做什么,但是要在给定范围内获得一小组随机值,​​这似乎有点简单:

Dim count As Int32 = 6
Dim randvals = Enumerable.Range(2, 16).
                OrderBy(Function(x) Rnd.Next()).
                Take(count).ToArray()
Console.WriteLine("Rand Vals: {0}", String.Join(", ", randvals))

兰德瓦尔斯:2、13、8、6、3、12

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2019-10-27
    • 2019-05-23
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多