如何在字符串队列中的某个索引处使项目出列?

时间:2016-10-08 18:05:18

标签: vb.net queue

我试图将项目出列,如果它们包含某个字符串。这是我希望可以工作的想法,但不是:

Dim baseUri As String = myuri.GetLeftPart(UriPartial.Authority)
        For i = workerURLs.Count - 1 To 0 Step -1
            If workerURLs(i).Contains(baseUri) Then
                workerURLs.Dequeue(i)
            End If
        Next

由于队列方法没有"在索引处排队"像列表这样的选项我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

实现它的一种方法是包装Queue(Of T)并在元素从中间“出列”时重新创建它:

Class IndexableQueue(Of T)

    Private _queue As New Queue(Of T)()

    Public Sub Enqueue(item As T)
        _queue.Enqueue(item)
    End Sub

    Public Function Dequeue() As T
        Return _queue.Dequeue()
    End Function

    Public Function Dequeue(index As Integer) As T
        Dim list = _queue.ToList()

        Dim item = list(index)

        list.RemoveAt(index)

        _queue = New Queue(Of T)(list)

        Return item
    End Function

End Class

这是最简单的实现,虽然它不是最有效的,因为我们在每次调用Queue时重新创建Dequeue(Integer)。但如果它不常见并且队列不大,那应该没问题。

最好的方法是完全重新实现Queue并使用List而不是数组作为基础类型。