arrays - VB.net 如何从列表中删除已经在数组中的项目
问题描述
所以我正在做交易或不交易,我目前正在尝试随机化什么情况下持有多少金额。目前,我的代码创建了值列表,然后随机化一个选择,然后输入到数组中。然后它将 26 个值输出到控制台。现在,当从列表中选择一个值并将其输入到数组中时,我希望将该值从列表中删除。因此,当循环重复并从列表中选择另一个项目时,它不能再选择在前一个循环中选择的项目。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim values = New List(Of Integer)({0.5, 1, 2, 5, 10, 15, 25, 50, 80, 100, 500, 750, 1000, 2000, 5000, 10000, 25000, 50000, 80000, 100000, 150000, 250000, 500000, 850000, 1000000, 10000000})
Dim sselect = New Random()
Dim cases(25) As Integer
For i = 0 To cases.Length - 1
cases(i) = sselect.Next(0, values.Count)
Console.WriteLine(values(cases(i)))
Next
End Sub
我尝试使用RemoveAll
然后AddressOf
删除重复值,但它似乎不起作用。
values.RemoveAll(AddressOf cases)
解决方案
您可以RemoveAt
在选择以下金额时使用:
删除 List 的指定索引处的元素。
像这样:
For i = 0 To cases.Length - 1
cases(i) = sselect.Next(0, values.Count)
Console.WriteLine(values(cases(i)))
values.RemoveAt(cases(i))
Next
使用这种方式将立即从列表中删除使用的值values
,这反过来又不允许选择重复的值。
我建议您在迭代之前保留原始列表的副本。一种快速简单的方法是在开始时创建两次列表。
Dim values = New List(Of Integer)({0.5, 1, 2, 5, 10, 15, 25, 50, 80, 100, 500, 750, 1000, 2000, 5000, 10000, 25000, 50000, 80000, 100000, 150000, 250000, 500000, 850000, 1000000, 10000000})
Dim original = New List(Of Integer)({0.5, 1, 2, 5, 10, 15, 25, 50, 80, 100, 500, 750, 1000, 2000, 5000, 10000, 25000, 50000, 80000, 100000, 150000, 250000, 500000, 850000, 1000000, 10000000})
values
在从列表中删除所有这些之后。您仍然会将它们列在original
列表中。假设您稍后会重用它们。
推荐阅读
- php - 在 Joomla 3 中为用户添加头像照片
- javascript - MouseUp 和 TouchEnd 事件多次触发,触摸事件得到良好的坐标
- wordpress - 如何从elementor的下拉菜单中删除闪烁的感叹号和问号?
- python - 将solve_ivp与用户指定值的强制函数一起使用
- javascript - 当用户尝试使用 oauth2.0 使用相同的 Gmail 帐户注册时,如何显示我的自定义模式?
- javascript - 在edittext中写入文本时自动完成 - 在Kotlin中使用外部脚本
- electron - 如何检查我的 Electron.NET 是否从文件启动?
- json - 如何为以下 json 数据制作一个 swift Codable 结构(我在 Swiftui 中使用 URLSession.dataTask 来获取数据)?
- flutter - 如何将 CameraImage 从 YUV420 转换为灰度,然后再将其传递给 tflite 模型
- python - 使用 LOOP 添加百分比变化列