zoukankan      html  css  js  c++  java
  • 存储数据键和项目对的类(Dictionary对象)

    存储数据键和项目对的类(Dictionary对象)

    <% 

    Class Dictionary

    Public Copyright, Developer, Name, Version, Web

    Private aryKey() 
    Private aryItem() 
    Private iCompareMode

    Private Sub Class_Initialize() 
    '请保留此信息 
    Copyright = "2002 www.ChinaOK.Net, All rights reserved." 
    Developer = "ChinaOK" 
    Name = "Dictionary" 
    Version = "1.0b" 
    Web = "http://www.ChinaOK.Net" 
    Redim aryKey(0) 
    Redim aryItem(0) 
    aryKey(0)="" 
    aryItem(0)="" 
    iCompareMode=0 
    End Sub

    Public Function Add(sKey,Item) 
    InsertSort sKey,Item 
    End Function

    Public Function Exists(sKey) 
    If BinSearch(sKey)=0 Then 
    Exists=false 
    Else 
    Exists=True 
    End if 
    End Function

    Public Function Items() 
    Items=aryItem 
    End Function

    Public Function Keys() 
    Keys=aryKey 
    End Function

    Public Function Remove(sKey) 
    DeleteSort sKey 
    End Function

    Public Function RemoveAll() 
    Redim aryKey(0) 
    Redim aryItem(0) 
    aryKey(0)="" 
    aryItem(0)="" 
    End Function

    Property Get Count() 
    Dim Len1,Len2 
    Len1=ubound(aryKey) 
    Len2=ubound(aryItem) 
    If Len1<>Len2 Then Redim Preserve aryItem(Len1) 
    Count=Len1 
    End Property

    Property Get Item(sKey) 
    Dim iTop 
    iTop=0 
    iTop = BinSearch(sKey) 
    If iTop<>0 Then 
    Item=aryItem(iTop) 
    Else 
    Add sKey,"" 
    Item="" 
    End If 
    End Property

    Property Let Item(sKey,NewItem) 
    Dim iTop 
    iTop=0 
    iTop = BinSearch(sKey) 
    If iTop<>0 Then 
    aryItem(iTop)=NewItem 
    Else 
    Add sKey,NewItem 
    End If 
    End Property

    Property Let Key(sKey,sNewKey) 
    Dim iTop 
    iTop = 0 
    iTop = BinSearch(sKey) 
    If iTop<>0 Then 
    aryKey(iTop)=sNewKey 
    Else 
    Err.Raise 19782,"myDictionary","未找到元素" & sKey,"",0 
    End If 
    End Property

    Property Let CompareMode(iMode) 
    If Count()>0 Then Err.Raise 19783,"myDictionary","设置字符串keyword比較模式必须在Items为空时设置","",0 
    If (iMode<>0 And iMode<>1) Then iMode=0 
    iCompareMode=iMode 
    End Property

    Property Get CompareMode() 
    CompareMode=iCompareMode 
    End Property


    Private Function BinSearch(sKey) 
    '折半查找算法 
    Dim Result 
    Result=0 
    Dim iHigh,iLow,iMid 
    iHigh = Count() 
    iLow = 1 
    Do While (iLow<=iHigh) 
    iMid=(iLow+iHigh)2 
    If strComp(aryKey(iMid),sKey,iCompareMode)=0 Then 
    Result=iMid 
    Exit Do 
    End If 
    If strComp(aryKey(iMid),sKey,iCompareMode)=1 Then 
    iHigh=iMid-1 
    Else 
    iLow=iMid+1 
    End if 
    Loop 
    BinSearch=Result 
    End Function

    Private Function DeleteSort(sKey) 
    Dim iTop,I,iLen 
    iTop=BinSearch(sKey) 
    If iTop=0 Then 
    Err.Raise

    End Function
  • 相关阅读:
    gradle添加阿里云maven库
    来谈谈MySQL的临时表,到底是个什么东西,以及怎么样产生的
    MySQL优化相关参数--先做个记录,以后可能用得到
    对于join操作,MySQL它是咋做的?
    Linux-常用命令记录
    有时候我们自认为有用的索引却并没有被MySQL选择使用?
    C#趟坑: Wait()线程结束时,会忽略子线程
    初次使用Windbg检查C#程序内存
    性能优化之三:将Dottrace过程加入持续集成
    性能优化之二:结构体类型的性能优化
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4488073.html
Copyright © 2011-2022 走看看