我如何進行這項作業,它不像普通串列那樣作業。我必須從包含 i 的串列中洗掉。
如果我的串列包含 ( 2,4,3,13,21,14,15,30)
我想洗掉前 6 個元素。
Public randomcards As New HashSet(Of Integer)
For i As Integer = 0 To 5
randomcards.remove(i)
Next
所以操作后,我的串列將變為 15,30,只有 2 個元素。
不幸的是,這不是一個正常的串列,我需要一點幫助
uj5u.com熱心網友回復:
根據定義,HashSet集合未排序(請參閱檔案),因此
我想洗掉前 6 個元素
沒有意義。
如果您知道要洗掉哪個元素(例如數字 14),請使用
randomcards.Remove(14)
同理,如果你想移除6個隨機整數(不保證符合插入順序!),你可以這樣做:
Dim fakeList As Integer() = randomcards.ToArray()
For i As Integer = 0 To 5
randomcards.Remove(fakeList(i))
Next
uj5u.com熱心網友回復:
這是相當乏味的,因為您不能通過索引參考 HashSet 中的專案。請記住,您不能通過洗掉元素來更改 For Each 中的任何集合。
創建一個哈希集。
創建一個串列。
將 HashSet 的前 6 個元素添加到串列中。
回圈遍歷串列,檢查串列中的專案是否在 HashSet 中。如果為 True 洗掉它。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim hs As New HashSet(Of Integer) From {2, 4, 3, 13, 21, 14, 15, 30} Dim lst As New List(Of Integer) Dim counter As Integer For Each i In hs If counter < 6 Then lst.Add(i) Else Exit For End If counter = 1 Next For Each i In lst If hs.Contains(i) Then hs.Remove(i) End If Next MessageBox.Show(hs.Count.ToString) For Each i In hs Debug.Print(i.ToString) Next End Sub
@Calaf's answer look superior.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402845.html
標籤:
下一篇:如何相互替換名稱控制元件
