tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 【解決】: QueueCollectionsの改良
投稿日: 2008/10/18(Sat) 15:02
投稿者ダンボ
> こだわるなら、Dequeue/Enqueueを繰り返してQueueをひとまわし循環させる
> うちにその項目を取り除くってことでも何とかなると思っています。

これでいいですかね?キューの最大個数=キャッシュ数は20〜100位と想定して
いるので負荷もそれほどかからないかと。

Public Class RQueue
    Inherits System.Collections.Generic.Queue(Of String)
    Public Sub Renqueue(ByVal Key As String)
        If MyBase.Contains(Key) Then
            Dim LoopCount As Integer = MyBase.Count
            For i As Integer = 1 To LoopCount
                Dim Item As String = MyBase.Dequeue
                If Not Item = Key Then
                    MyBase.Enqueue(Item)
                End If
            Next i
        End If
        MyBase.Enqueue(Key)
    End Sub
End Class

このクラスだけでキューを管理するのでキュー内に同じKeyは無いという前提です。
LoopCountを別出しにしたのは、キューの長さが変わりうるから(必ず1減る)。

[後日追記]この改良クラス利用で望みのキャッシュ機構はうまく動いているみたいです。
着想が現実化できてとても嬉しいです。こういう喜びがプログラミング熱をさまさないで
いる一因と思います。
Purge処理を忘れていたためキャッシュ上に残ったデータがディスクに反映されずに
終わったことは内緒。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。