一方面是对以前工作的纪念 一方面是让大家一起分享经验 最重要的 是逼迫自己学习新的知识不要抱着经验停滞不前。
用法简单 建立新实例后
add增加参与的项
toArray取出乱序数组
RebuildOrder 重新排序
Class RandomListItemClass RandomListItem
Implements System.IComparable
Public Value As Object
Public RandomRight As Double
Public Function CompareTo()Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
Dim o As RandomListItem = obj
Return Me.RandomRight - o.RandomRight
End Function
End Class
Public Class FactoryClass Factory
Dim Base As System.Collections.SortedList
Sub New()Sub New()
Base = New SortedList
End Sub
Public Sub Add()Sub Add(ByVal value As Object)
Dim r As New System.Random
Dim i As New RandomListItem
i.Value = value
i.RandomRight = r.NextDouble
r = Nothing
Base.Add(Common.MD5CodeStr(i.RandomRight & Now), i)
End Sub
Public Sub AddArray()Sub AddArray(ByVal values As Object())
Dim r As New System.Random
For Each value As Object In values
Dim i As New RandomListItem
i.Value = value
i.RandomRight = r.NextDouble
Base.Add(Common.MD5CodeStr(i.RandomRight & Now), i)
Next
r = Nothing
End Sub
Public Function ToArray()Function ToArray(Optional ByVal ArraySize As Int32 = -1) As Object()
If ArraySize = -1 Then ArraySize = Base.Count
If ArraySize > Base.Count - 1 Then ArraySize = Base.Count
Dim tmpa() As Collections.DictionaryEntry
If Not Base.Count = 0 Then ReDim tmpa(Base.Count - 1)
Dim r() As Object
If Not Base.Count = 0 Then ReDim r(ArraySize - 1)
Base.CopyTo(tmpa, 0)
For i As Int32 = 0 To r.Length - 1
Dim ti As RandomListItem = tmpa(i).Value
r(i) = ti.Value
Next
Return r
End Function
Public Function ToHashTable()Function ToHashTable() As Hashtable
Dim x As New Hashtable
For Each i As RandomListItem In Base
x.Add(Base.GetKey(Base.IndexOfValue(i)), i.Value)
Next
Return x
End Function
Public Sub RebuildOrder()Sub RebuildOrder()
For Each i As RandomListItem In Base
Dim r As New System.Random
i.RandomRight = r.NextDouble
r = Nothing
Next
End Sub
End Class