class arraylist

 Private items()

 Private size

  Private Sub Class_Initialize

 size = 0

 ReDim items(1)

  End Sub

  Private Sub Class_Terminate

 items = null

  End Sub

 Public Function Add(ByVal value)

       If (size = Ubound(items)) Then EnsureCapacity((size + 1))

       items(size) = value

       size = size + 1

       Add = size

 End Function

 Public Property Get Item(index)

  Item = items(index)

 End Property

 Public Property Let Item(index, vObject)

  items(index) = vObject

 End Property

 Property Get Count

  Count = size

 End Property

 Public Property Get Capacity()

  Capacity = Ubound(items)

 End Property

 Public Property Let Capacity(value)

            If (value <> Ubound(items)) Then

                  If (value < size) Then Err.Rise 6

                  If (value > 0) Then

                        ReDim Preserve items(value)

                  Else

                        ReDim Preserve items(3)

                  End If

            End If

 End Property

 Private Sub EnsureCapacity(ByVal min)

       If (Ubound(items) < min) Then

      Dim num1 : num1 = IIf((Ubound(items) = 0), 4, (Ubound(items) * 2))

      If (num1 < min) Then num1 = min

      Capacity = num1

       End If

 End Sub

 Private Function IIf(j, r1, r2)

  IF (j) Then

   IIf = r1

  Else

   IIf = r2

  End IF

 End Function

End Class

示例:

Dim al : Set al = new ArrayList

al.Add(1)

al.Add(2)

al.Add(3)

al.Add(4)

al.Add(5)

al.Add(6)

al.Add(7)

al.Add(8)

al.Add(9)

al.Add(10)

For i = 0 To al.Count -1

 w(“Index”& i &”: “& al.Item(i))

Next

w(“Count: “& al.Count)

w(“Capacity: “& al.Capacity)

Sub w(o)

Response.Write(o &”<br />”)

End Sub
您可能感兴趣的文章:

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。